override public void TestBasics(T fbxGeometry, FbxNodeAttribute.EType typ) { base.TestBasics(fbxGeometry, typ); int origCount = fbxGeometry.GetDeformerCount(); // test get blendshape deformer FbxBlendShape blendShape = FbxBlendShape.Create(Manager, "blendShape"); int index = fbxGeometry.AddDeformer(blendShape); Assert.GreaterOrEqual(index, 0); origCount++; // TODO: (UNI-19581): If we add the blendShape after the skin, then the below // tests fail. Assert.AreEqual(blendShape, fbxGeometry.GetBlendShapeDeformer(index)); Assert.AreEqual(blendShape, fbxGeometry.GetBlendShapeDeformer(index, null)); Assert.AreEqual(blendShape, fbxGeometry.GetDeformer(index, FbxDeformer.EDeformerType.eBlendShape)); Assert.AreEqual(1, fbxGeometry.GetDeformerCount(FbxDeformer.EDeformerType.eBlendShape)); // test add deformer FbxSkin skin = FbxSkin.Create(Manager, "skin"); int skinIndex = fbxGeometry.AddDeformer(skin); Assert.GreaterOrEqual(skinIndex, 0); Assert.AreEqual(skin, fbxGeometry.GetDeformer(skinIndex)); // test get invalid deformer index doesn't crash fbxGeometry.GetDeformer(-1, new FbxStatus()); fbxGeometry.GetDeformer(int.MaxValue, new FbxStatus()); // test get deformer null FbxStatus fbxGeometry.GetDeformer(0, null); // check right index but wrong type Assert.IsNull(fbxGeometry.GetDeformer(skinIndex, FbxDeformer.EDeformerType.eVertexCache, null)); Assert.AreEqual(origCount + 1, fbxGeometry.GetDeformerCount()); // test add null deformer Assert.That(() => fbxGeometry.AddDeformer(null), Throws.Exception.TypeOf <System.ArgumentNullException>()); // test add invalid deformer skin.Destroy(); Assert.That(() => fbxGeometry.AddDeformer(skin), Throws.Exception.TypeOf <System.ArgumentNullException>()); }