public void TestAdd() { using (var fbxPose = CreateObject("pose")){ using (var fbxNode = FbxNode.Create(Manager, "node")) using (var fbxMatrix = new FbxMatrix()){ Assert.AreEqual(0, fbxPose.GetCount()); // test basic use int index = fbxPose.Add(fbxNode, fbxMatrix); // returns -1 if it fails Assert.Greater(index, -1); Assert.AreEqual(fbxPose.GetNode(index), fbxNode); Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix); Assert.AreEqual(1, fbxPose.GetCount()); // test adding null Assert.That(() => { fbxPose.Add(null, null); }, Throws.Exception.TypeOf <System.ArgumentNullException> ()); fbxPose.Add(FbxNode.Create(Manager, "node1"), fbxMatrix); Assert.AreEqual(2, fbxPose.GetCount()); } var node = FbxNode.Create(Manager, "node1"); using (var fbxMatrix = new FbxMatrix()) { // test adding invalid node node.Destroy(); Assert.That(() => { fbxPose.Add(node, fbxMatrix); }, Throws.Exception.TypeOf <System.ArgumentNullException> ()); } using (var fbxNode = FbxNode.Create(Manager, "node2")){ var fbxMatrix = new FbxMatrix(); // test adding invalid matrix fbxMatrix.Dispose(); Assert.That(() => { fbxPose.Add(fbxNode, fbxMatrix); }, Throws.Exception.TypeOf <System.ArgumentNullException> ()); } using (var fbxNode = FbxNode.Create(Manager, "node3")) using (var fbxMatrix = new FbxMatrix()) { // test with local matrix arg int index = fbxPose.Add(fbxNode, fbxMatrix, true); // false is default Assert.Greater(index, -1); Assert.AreEqual(fbxPose.GetNode(index), fbxNode); Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix); } using (var fbxNode = FbxNode.Create(Manager, "node4")) using (var fbxMatrix = new FbxMatrix()) { // test with multiple bind pose arg int index = fbxPose.Add(fbxNode, fbxMatrix, false, false); // true is default Assert.Greater(index, -1); Assert.AreEqual(fbxPose.GetNode(index), fbxNode); Assert.AreEqual(fbxPose.GetMatrix(index), fbxMatrix); } } }