Skip to content

Commit fe3980b

Browse files
committed
fix unittests
1 parent a65b897 commit fe3980b

File tree

1 file changed

+46
-36
lines changed

1 file changed

+46
-36
lines changed

Assets/FbxExporters/Editor/UnitTests/FbxAnimationTest.cs

Lines changed: 46 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -431,47 +431,41 @@ public int Main (KeyData keyData, string testName, string path)
431431
AnimationCurve animCurveImported = AnimationUtility.GetEditorCurve (animClipImported, curveBinding);
432432
Assert.That (animCurveImported, Is.Not.Null);
433433

434-
string propertyBinding;
434+
string propertyBinding = curveBinding.propertyName;
435+
int id = keyData.GetIndexOf (propertyBinding);
435436

436-
MapEulerToQuaternionPropertyName.TryGetValue (curveBinding.propertyName, out propertyBinding);
437+
bool hasQuatBinding =
438+
MapEulerToQuaternionPropertyName.TryGetValue (propertyBinding, out propertyBinding);
437439

438-
bool hasQuatBinding = !string.IsNullOrEmpty (propertyBinding);
439-
440-
if (!hasQuatBinding)
441-
propertyBinding = curveBinding.propertyName;
442-
443-
int id = keyData.GetIndexOf (curveBinding.propertyName);
444-
445-
if (id == -1)
440+
if (id==-1)
446441
id = keyData.GetIndexOf (propertyBinding);
447442

448443
#if DEBUG_UNITTEST
449-
Debug.Log(string.Format("animtest binding={0} quatBinding={1} id={2}", curveBinding.propertyName, propertyBinding, id));
444+
Debug.Log(string.Format("propertyBinding={0} mappedBinding={1} id={2}", curveBinding.propertyName, propertyBinding, id));
450445
#endif
451446

452447
if (id != -1)
453448
{
454449
if (keyData.compareOriginalKeys)
455450
{
456-
// NOTE: we cannot test the keys on curves that go out as quaternion
457-
// return as euler.
451+
// NOTE: we cannot compare the keys that exported quaternion but are imported as euler.
458452
if (!hasQuatBinding)
459453
{
460-
// test against original data
454+
// compare against original keydata
461455
KeysTest (keyData.keyTimes, keyData.GetKeyValues (id), animCurveImported, curveBinding.propertyName);
462456

463-
// test against origin curve keys
457+
// compare against original animCurve
464458
KeysTest (animCurvesOriginal[id], animCurveImported, curveBinding.propertyName, keyComparer);
465459
}
466460
else
467461
{
468-
// test against original data
469-
KeysTest (keyData.keyTimes, keyData.GetAltKeyValues (id), animCurveImported, curveBinding.propertyName);
462+
// compare by sampled keyvalues against original keydata
463+
KeyValuesTest (keyData.keyTimes, keyData.GetAltKeyValues (id), animCurveImported, curveBinding.propertyName);
470464
}
471465
}
472466
else
473467
{
474-
// test against original data
468+
// compare by sampled keyvalues against original animCurve
475469
KeyValuesTest (animCurvesOriginal[id], animCurveImported, curveBinding.propertyName);
476470
}
477471
result++;
@@ -503,45 +497,61 @@ public static void KeysTest (AnimationCurve expectedAnimCurve, AnimationCurve ac
503497
Assert.That(actualAnimCurve.keys, Is.EqualTo(expectedAnimCurve.keys).Using<Keyframe>(keyComparer), string.Format("{0} key doesn't match", message));
504498
}
505499

506-
public static void KeyValuesTest (AnimationCurve expectedAnimCurve, AnimationCurve actualAnimCurve, string message)
507-
{
508-
foreach (var key in expectedAnimCurve.keys)
509-
{
510-
float actualKeyValue = actualAnimCurve.Evaluate(key.time);
511-
512-
#if DEBUG_UNITTEST
513-
Debug.Log(string.Format("key time={0} actual={1} expected={2} delta={3}", key.time.ToString(), key.value.ToString(), actualKeyValue.ToString(), Mathf.Abs(key.value-actualKeyValue).ToString()));
514-
#endif
515-
Assert.That(key.value, Is.EqualTo(actualKeyValue).Within(0.000001), string.Format("{0} key ({1}) doesn't match", message, key.time));
516-
}
517-
}
518-
519-
public static void KeysTest (float [] keyTimesExpected, float [] keyValuesExpected, AnimationCurve actualAnimCurve, string message, IComparer<Keyframe> keyComparer=null)
500+
public static void KeysTest (float [] expectedKeyTimes, float [] expectedKeyValues, AnimationCurve actualAnimCurve, string message, IComparer<Keyframe> keyComparer=null)
520501
{
521502
if (keyComparer==null)
522503
keyComparer = new BasicKeyComparer();
523504

524-
int numKeysExpected = keyTimesExpected.Length;
505+
int numKeysExpected = expectedKeyTimes.Length;
525506

526507
// NOTE : Uni-34492 number of keys don't match
527508
Assert.That (actualAnimCurve.length, Is.EqualTo(numKeysExpected), string.Format("{0} number of keys doesn't match",message));
528509

529-
//check imported animation against original
510+
// check actual animation against expected
530511
// NOTE: if I check the key values explicitly they match but when I compare using this ListMapper the float values
531512
// are off by 0.000005f; not sure why that happens.
532513
var keysExpected = new Keyframe[numKeysExpected];
533514

534515
for (int idx = 0; idx < numKeysExpected; idx++)
535516
{
536-
keysExpected[idx].time = keyTimesExpected[idx];
537-
keysExpected[idx].value = keyValuesExpected[idx];
517+
keysExpected[idx].time = expectedKeyTimes[idx];
518+
keysExpected[idx].value = expectedKeyValues[idx];
538519
}
539520

540521
Assert.That(actualAnimCurve.keys, Is.EqualTo(keysExpected).Using<Keyframe>(keyComparer), string.Format("{0} key doesn't match", message));
541522

542523
return ;
543524
}
544525

526+
public static void KeyValuesTest (float [] expectedKeyTimes, float [] expectedKeyValues, AnimationCurve actualAnimCurve, string message)
527+
{
528+
for (var i=0; i < expectedKeyTimes.Length; ++i)
529+
{
530+
float expectedKeyTime = expectedKeyTimes[i];
531+
float expectedKeyValue = expectedKeyValues[i];
532+
533+
float actualKeyValue = actualAnimCurve.Evaluate(expectedKeyTime);
534+
535+
#if DEBUG_UNITTEST
536+
Debug.Log(string.Format("key time={0} expected={1} actual={2} delta={3}", expectedKeyTime.ToString(), expectedKeyValue.ToString(), actualKeyValue.ToString(), Mathf.Abs(expectedKeyValue-actualKeyValue).ToString()));
537+
#endif
538+
Assert.That(expectedKeyValue, Is.EqualTo(actualKeyValue).Within(0.000001), string.Format("{0} key ({1}) doesn't match", message, expectedKeyTime));
539+
}
540+
}
541+
542+
public static void KeyValuesTest (AnimationCurve expectedAnimCurve, AnimationCurve actualAnimCurve, string message)
543+
{
544+
foreach (var key in expectedAnimCurve.keys)
545+
{
546+
float actualKeyValue = actualAnimCurve.Evaluate(key.time);
547+
548+
#if DEBUG_UNITTEST
549+
Debug.Log(string.Format("key time={0} actual={1} expected={2} delta={3}", key.time.ToString(), key.value.ToString(), actualKeyValue.ToString(), Mathf.Abs(key.value-actualKeyValue).ToString()));
550+
#endif
551+
Assert.That(key.value, Is.EqualTo(actualKeyValue).Within(0.000001), string.Format("{0} key ({1}) doesn't match", message, key.time));
552+
}
553+
}
554+
545555
public static void CurveTest(AnimationCurve animCurveImported, AnimationCurve animCurveActual, string message)
546556
{
547557
// TODO : Uni-34492 number of keys don't match

0 commit comments

Comments
 (0)