Skip to content

Commit a948f01

Browse files
committed
improve test
1 parent a39bbde commit a948f01

File tree

2 files changed

+55
-56
lines changed

2 files changed

+55
-56
lines changed

Assets/FbxExporters/Editor/UnitTests/FbxAnimationTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,13 @@ public static IEnumerable SkinnedMeshTestCases {
9090
yield return "Models/DefaultMale/Male_DyingHitFromBack_Blend_T3_Cut01_James.fbx";
9191
}
9292
}
93+
94+
public static IEnumerable BlendShapeTestCases {
95+
get {
96+
yield return "FbxExporters/Editor/UnitTests/Models/blendshape.fbx";
97+
yield return "FbxExporters/Editor/UnitTests/Models/blendshape_with_skinning.fbx";
98+
}
99+
}
93100
}
94101

95102
[TestFixture]

Assets/FbxExporters/Editor/UnitTests/ModelExporterTest.cs

Lines changed: 48 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -690,69 +690,61 @@ public int Compare(Vector3 a, Vector3 b)
690690
}
691691
}
692692

693-
[Test]
694-
public void TestBlendShapeExport()
693+
[Test, TestCaseSource(typeof(AnimationTestDataClass), "BlendShapeTestCases")]
694+
public void TestBlendShapeExport(string fbxPath)
695695
{
696-
// TODO: find more practical test data
697-
var fbxPaths = new string[]{
698-
"FbxExporters/Editor/UnitTests/Models/blendshape.fbx",
699-
"FbxExporters/Editor/UnitTests/Models/blendshape_with_skinning.fbx"
700-
};
701-
foreach(var fbxPath in fbxPaths)
696+
// add fbx to scene
697+
GameObject originalFbxObj = AssetDatabase.LoadMainAssetAtPath("Assets/" + fbxPath) as GameObject;
698+
Assert.IsNotNull(originalFbxObj);
699+
GameObject originalGO = GameObject.Instantiate(originalFbxObj);
700+
Assert.IsTrue(originalGO);
701+
702+
// export fbx
703+
// get GameObject
704+
string filename = GetRandomFbxFilePath();
705+
ModelExporter.ExportObject(filename, originalGO);
706+
GameObject fbxObj = AssetDatabase.LoadMainAssetAtPath(filename) as GameObject;
707+
Assert.IsTrue(fbxObj);
708+
709+
var originalSMR = originalGO.GetComponentInChildren<SkinnedMeshRenderer>();
710+
var exportedSMR = fbxObj.GetComponentInChildren<SkinnedMeshRenderer>();
711+
Assert.IsNotNull(originalSMR);
712+
Assert.IsNotNull(exportedSMR);
713+
714+
var originalMesh = originalSMR.sharedMesh;
715+
var exportedMesh = exportedSMR.sharedMesh;
716+
Assert.IsNotNull(originalMesh);
717+
Assert.IsNotNull(exportedMesh);
718+
719+
// compare blend shape data
720+
Assert.AreNotEqual(originalMesh.blendShapeCount, 0);
721+
Assert.AreEqual(originalMesh.blendShapeCount, exportedMesh.blendShapeCount);
702722
{
703-
// add fbx to scene
704-
GameObject originalFbxObj = AssetDatabase.LoadMainAssetAtPath("Assets/" + fbxPath) as GameObject;
705-
Assert.IsNotNull(originalFbxObj);
706-
GameObject originalGO = GameObject.Instantiate(originalFbxObj);
707-
Assert.IsTrue(originalGO);
708-
709-
// export fbx
710-
// get GameObject
711-
string filename = GetRandomFbxFilePath();
712-
ModelExporter.ExportObject(filename, originalGO);
713-
GameObject fbxObj = AssetDatabase.LoadMainAssetAtPath(filename) as GameObject;
714-
Assert.IsTrue(fbxObj);
715-
716-
var originalSMR = originalGO.GetComponentInChildren<SkinnedMeshRenderer>();
717-
var exportedSMR = fbxObj.GetComponentInChildren<SkinnedMeshRenderer>();
718-
Assert.IsNotNull(originalSMR);
719-
Assert.IsNotNull(exportedSMR);
720-
721-
var originalMesh = originalSMR.sharedMesh;
722-
var exportedMesh = exportedSMR.sharedMesh;
723-
Assert.IsNotNull(originalMesh);
724-
Assert.IsNotNull(exportedMesh);
725-
726-
// compare blend shape data
727-
Assert.AreNotEqual(originalMesh.blendShapeCount, 0);
728-
Assert.AreEqual(originalMesh.blendShapeCount, exportedMesh.blendShapeCount);
723+
var deltaVertices = new Vector3[originalMesh.vertexCount];
724+
var deltaNormals = new Vector3[originalMesh.vertexCount];
725+
var deltaTangents = new Vector3[originalMesh.vertexCount];
726+
var fbxDeltaVertices = new Vector3[originalMesh.vertexCount];
727+
var fbxDeltaNormals = new Vector3[originalMesh.vertexCount];
728+
var fbxDeltaTangents = new Vector3[originalMesh.vertexCount];
729+
730+
for (int bi = 0; bi < originalMesh.blendShapeCount; ++bi)
729731
{
730-
var deltaVertices = new Vector3[originalMesh.vertexCount];
731-
var deltaNormals = new Vector3[originalMesh.vertexCount];
732-
var deltaTangents = new Vector3[originalMesh.vertexCount];
733-
var fbxDeltaVertices = new Vector3[originalMesh.vertexCount];
734-
var fbxDeltaNormals = new Vector3[originalMesh.vertexCount];
735-
var fbxDeltaTangents = new Vector3[originalMesh.vertexCount];
736-
737-
for (int bi = 0; bi < originalMesh.blendShapeCount; ++bi)
738-
{
739-
Assert.AreEqual(originalMesh.GetBlendShapeName(bi), exportedMesh.GetBlendShapeName(bi));
740-
Assert.AreEqual(originalMesh.GetBlendShapeFrameCount(bi), exportedMesh.GetBlendShapeFrameCount(bi));
732+
Assert.AreEqual(originalMesh.GetBlendShapeName(bi), exportedMesh.GetBlendShapeName(bi));
733+
Assert.AreEqual(originalMesh.GetBlendShapeFrameCount(bi), exportedMesh.GetBlendShapeFrameCount(bi));
741734

742-
int frameCount = originalMesh.GetBlendShapeFrameCount(bi);
743-
for (int fi = 0; fi < frameCount; ++fi)
744-
{
745-
Assert.AreEqual(originalMesh.GetBlendShapeFrameWeight(bi, fi), exportedMesh.GetBlendShapeFrameWeight(bi, fi));
735+
int frameCount = originalMesh.GetBlendShapeFrameCount(bi);
736+
for (int fi = 0; fi < frameCount; ++fi)
737+
{
738+
Assert.AreEqual(originalMesh.GetBlendShapeFrameWeight(bi, fi), exportedMesh.GetBlendShapeFrameWeight(bi, fi));
746739

747-
originalMesh.GetBlendShapeFrameVertices(bi, fi, deltaVertices, deltaNormals, deltaTangents);
748-
exportedMesh.GetBlendShapeFrameVertices(bi, fi, fbxDeltaVertices, fbxDeltaNormals, fbxDeltaTangents);
740+
originalMesh.GetBlendShapeFrameVertices(bi, fi, deltaVertices, deltaNormals, deltaTangents);
741+
exportedMesh.GetBlendShapeFrameVertices(bi, fi, fbxDeltaVertices, fbxDeltaNormals, fbxDeltaTangents);
749742

750-
var v3comparer = new Vector3Comparer();
751-
Assert.That(deltaVertices, Is.EqualTo(fbxDeltaVertices).Using<Vector3>(v3comparer), string.Format("delta vertices don't match"));
752-
Assert.That(deltaNormals, Is.EqualTo(fbxDeltaNormals).Using<Vector3>(v3comparer), string.Format("delta normals don't match"));
753-
Assert.That(deltaTangents, Is.EqualTo(fbxDeltaTangents).Using<Vector3>(v3comparer), string.Format("delta tangents don't match"));
743+
var v3comparer = new Vector3Comparer();
744+
Assert.That(deltaVertices, Is.EqualTo(fbxDeltaVertices).Using<Vector3>(v3comparer), string.Format("delta vertices don't match"));
745+
Assert.That(deltaNormals, Is.EqualTo(fbxDeltaNormals).Using<Vector3>(v3comparer), string.Format("delta normals don't match"));
746+
Assert.That(deltaTangents, Is.EqualTo(fbxDeltaTangents).Using<Vector3>(v3comparer), string.Format("delta tangents don't match"));
754747

755-
}
756748
}
757749
}
758750
}

0 commit comments

Comments
 (0)