Add a first batch of automated tests

This commit is contained in:
Haï~
2023-09-03 15:01:01 +02:00
parent dfbabc55a3
commit 27399ae25b
26 changed files with 2164 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
using NUnit.Framework;
using UnityEditor.Animations;
using UnityEngine;
using Assert = UnityEngine.Assertions.Assert;
namespace av3_animator_as_code.Tests.PlayMode
{
public class AIACAnimatorWideTest : AbstractSimpleSingleLayerAIAC
{
[Test]
public void It_should_override_bool()
{
var aac = TestAac();
var controller = new AnimatorController();
var fx = aac.CreateMainArbitraryControllerLayer(controller);
// Exercise
var first = fx.NewState("First");
var second = fx.NewState("Second");
var myBool = fx.BoolParameter("MyBool");
first.TransitionsTo(second).When(myBool.IsTrue());
fx.OverrideValue(myBool, true);
var animator = _root.AddComponent<Animator>();
animator.runtimeAnimatorController = controller;
animator.enabled = false;
// Verify
// Frame 0
Assert.IsTrue(Info0(animator).IsName("First"));
// Frame 1
animator.Update(1 / 60f);
Assert.IsTrue(Info0(animator).IsName("Second"));
}
[Test]
public void It_should_override_int()
{
var aac = TestAac();
var controller = new AnimatorController();
var fx = aac.CreateMainArbitraryControllerLayer(controller);
// Exercise
var first = fx.NewState("First");
var second = fx.NewState("Second");
var myInt = fx.IntParameter("MyInt");
first.TransitionsTo(second).When(myInt.IsGreaterThan(1));
fx.OverrideValue(myInt, 2);
var animator = _root.AddComponent<Animator>();
animator.runtimeAnimatorController = controller;
animator.enabled = false;
// Verify
// Frame 0
Assert.IsTrue(Info0(animator).IsName("First"));
// Frame 1
animator.Update(1 / 60f);
Assert.IsTrue(Info0(animator).IsName("Second"));
}
[Test]
public void It_should_override_float()
{
var aac = TestAac();
var controller = new AnimatorController();
var fx = aac.CreateMainArbitraryControllerLayer(controller);
// Exercise
var first = fx.NewState("First");
var second = fx.NewState("Second");
var myFloat = fx.FloatParameter("MyFloat");
first.TransitionsTo(second).When(myFloat.IsGreaterThan(0.49f));
fx.OverrideValue(myFloat, 0.5f);
var animator = _root.AddComponent<Animator>();
animator.runtimeAnimatorController = controller;
animator.enabled = false;
// Verify
// Frame 0
Assert.IsTrue(Info0(animator).IsName("First"));
// Frame 1
animator.Update(1 / 60f);
Assert.IsTrue(Info0(animator).IsName("Second"));
}
private static AnimatorStateInfo Info0(Animator animator)
{
return animator.GetCurrentAnimatorStateInfo(0);
}
}
}