diff --git a/test/skinpart_test.cpp b/test/skinpart_test.cpp
index 2128b05fb83e3327abaf47583b95c20d4215a5bc..2ca9bd019de3590f92984e0160907099bce4f876 100644
--- a/test/skinpart_test.cpp
+++ b/test/skinpart_test.cpp
@@ -94,4 +94,34 @@ BOOST_AUTO_TEST_CASE(write_skinpart_test)
   BOOST_CHECK_EQUAL(skinpart->skinPartitionBlocks[0].numTriangles, 1);
 }
 
+BOOST_AUTO_TEST_CASE(skinpart_triangles_partnum_test)
+{
+  // create a simple skin partition
+  NiSkinPartitionRef skinpart = new NiSkinPartition;
+  skinpart->SetNumPartitions(1);
+  vector<Vector3> verts;
+  vector<Triangle> tris;
+  verts.push_back(Vector3(0, 0, 0));
+  verts.push_back(Vector3(0, 1, 0));
+  verts.push_back(Vector3(0, 0, 1));
+  tris.push_back(Triangle(0, 1, 2));
+  BOOST_CHECK_THROW(skinpart->SetTriangles(5, tris), std::runtime_error);
+  BOOST_CHECK_NO_THROW(skinpart->SetTriangles(0, tris));
+}
+
+BOOST_AUTO_TEST_CASE(skinpart_triangles_numtriangles_test)
+{
+  // create a simple skin partition
+  NiSkinPartitionRef skinpart = new NiSkinPartition;
+  skinpart->SetNumPartitions(1);
+  vector<Vector3> verts;
+  vector<Triangle> tris;
+  verts.push_back(Vector3(0, 0, 0));
+  verts.push_back(Vector3(0, 1, 0));
+  verts.push_back(Vector3(0, 0, 1));
+  tris.push_back(Triangle(0, 1, 2));
+  skinpart->SetTriangles(0, tris);
+  BOOST_CHECK_EQUAL(skinpart->skinPartitionBlocks[0].numTriangles, 1);
+}
+
 BOOST_AUTO_TEST_SUITE_END()