Skip to content

Commit fc17e03

Browse files
committed
Add HasParameter extension method tests
1 parent 523f35d commit fc17e03

File tree

8 files changed

+368
-10
lines changed

8 files changed

+368
-10
lines changed
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
using Adnc.AnimatorHelpers.Editors.Testing.Utilities;
2+
using Adnc.AnimatorHelpers.HasParameters;
3+
using Adnc.Utility.Testing;
4+
using NUnit.Framework;
5+
using UnityEngine;
6+
7+
namespace Adnc.AnimatorHelpers.Editors.Testing.HasParameters {
8+
[TestFixture(Category = "HasParameter")]
9+
public class TestHasParametersExtensions : TestBase {
10+
private AnimatorStub _stub;
11+
private AnimatorHelperRuntime _runtime;
12+
13+
[SetUp]
14+
public void Setup () {
15+
_runtime = new GameObject("AnimatorRuntime").AddComponent<AnimatorHelperRuntime>();
16+
_stub = new AnimatorStub();
17+
18+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
19+
name = "bool",
20+
type = AnimatorControllerParameterType.Bool
21+
});
22+
23+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
24+
name = "float",
25+
type = AnimatorControllerParameterType.Float
26+
});
27+
28+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
29+
name = "int",
30+
type = AnimatorControllerParameterType.Int
31+
});
32+
33+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
34+
name = "trigger",
35+
type = AnimatorControllerParameterType.Trigger
36+
});
37+
}
38+
39+
[TearDown]
40+
public void Teardown () {
41+
Object.DestroyImmediate(_stub.Animator.gameObject);
42+
_stub = null;
43+
44+
AnimatorHelperRuntime.ClearSingleton();
45+
_runtime = null;
46+
}
47+
48+
[Test]
49+
public void HasParameterDoesNotFailOnMultipleIdenticalKeyNames () {
50+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
51+
name = "bool",
52+
type = AnimatorControllerParameterType.Float
53+
});
54+
55+
_stub.InjectCtrl();
56+
57+
Assert.IsTrue(_stub.Animator.HasParameter("bool"));
58+
}
59+
60+
[Test]
61+
public void HasParameterWorksWithPreCaching () {
62+
_stub.InjectCtrl();
63+
AnimatorHelperRuntime.Instance.Cache(_stub.Animator);
64+
var id = _stub.Animator.runtimeAnimatorController.name;
65+
66+
Assert.IsTrue(AnimatorHelperRuntime.Instance.parameters.HasParameters(id));
67+
Assert.IsTrue(_stub.Animator.HasParameter("bool"));
68+
}
69+
70+
// @TODO Move cahce test onto a AnimatorHelperRuntime testing class
71+
[Test]
72+
public void HasParameterGetsTheSameParameterCacheAcrossAnimatorControllers () {
73+
_stub.InjectCtrl();
74+
_stub.Animator.HasParameter("bool");
75+
76+
var clone = Object.Instantiate(_stub.Animator.gameObject).GetComponent<Animator>();
77+
var id = clone.runtimeAnimatorController.name;
78+
79+
Assert.IsTrue(AnimatorHelperRuntime.Instance.parameters.HasParameters(id));
80+
81+
Assert.IsTrue(clone.HasParameter("bool"));
82+
}
83+
84+
[Test]
85+
public void HasParameterReturnsTrue () {
86+
_stub.InjectCtrl();
87+
88+
Assert.IsTrue(_stub.Animator.HasParameter("bool"));
89+
}
90+
91+
[Test]
92+
public void HasParameterReturnsFalse () {
93+
_stub.InjectCtrl();
94+
95+
Assert.IsFalse(_stub.Animator.HasParameter("asdf"));
96+
}
97+
98+
[Test]
99+
public void HasParameterEmptyReturnsFalse () {
100+
_stub.InjectCtrl();
101+
102+
Assert.IsFalse(_stub.Animator.HasParameter(""));
103+
}
104+
105+
[Test]
106+
public void HasParameterNullReturnsFalse () {
107+
_stub.InjectCtrl();
108+
109+
Assert.IsFalse(_stub.Animator.HasParameter(null));
110+
}
111+
112+
[Test]
113+
public void HasBoolReturnsTrue () {
114+
_stub.InjectCtrl();
115+
116+
Assert.IsTrue(_stub.Animator.HasBool("bool"));
117+
}
118+
119+
[Test]
120+
public void HasBoolReturnsFalse () {
121+
_stub.InjectCtrl();
122+
123+
Assert.IsFalse(_stub.Animator.HasBool("asdf"));
124+
}
125+
126+
[Test]
127+
public void HasBoolEmptyReturnsFalse () {
128+
_stub.InjectCtrl();
129+
130+
Assert.IsFalse(_stub.Animator.HasBool(""));
131+
}
132+
133+
[Test]
134+
public void HasBoolNullReturnsFalse () {
135+
_stub.InjectCtrl();
136+
137+
Assert.IsFalse(_stub.Animator.HasBool(null));
138+
}
139+
140+
[Test]
141+
public void HasFloatReturnsTrue () {
142+
_stub.InjectCtrl();
143+
144+
Assert.IsTrue(_stub.Animator.HasFloat("float"));
145+
}
146+
147+
[Test]
148+
public void HasFloatReturnsFalse () {
149+
_stub.InjectCtrl();
150+
151+
Assert.IsFalse(_stub.Animator.HasFloat("asdf"));
152+
}
153+
154+
[Test]
155+
public void HasFloatEmptyReturnsFalse () {
156+
_stub.InjectCtrl();
157+
158+
Assert.IsFalse(_stub.Animator.HasFloat(""));
159+
}
160+
161+
[Test]
162+
public void HasFloatNullReturnsFalse () {
163+
_stub.InjectCtrl();
164+
165+
Assert.IsFalse(_stub.Animator.HasFloat(null));
166+
}
167+
168+
[Test]
169+
public void HasIntReturnsTrue () {
170+
_stub.InjectCtrl();
171+
172+
Assert.IsTrue(_stub.Animator.HasInt("int"));
173+
}
174+
175+
[Test]
176+
public void HasIntReturnsFalse () {
177+
_stub.InjectCtrl();
178+
179+
Assert.IsFalse(_stub.Animator.HasInt("asdf"));
180+
}
181+
182+
[Test]
183+
public void HasIntEmptyReturnsFalse () {
184+
_stub.InjectCtrl();
185+
186+
Assert.IsFalse(_stub.Animator.HasInt(""));
187+
}
188+
189+
[Test]
190+
public void HasIntNullReturnsFalse () {
191+
_stub.InjectCtrl();
192+
193+
Assert.IsFalse(_stub.Animator.HasInt(null));
194+
}
195+
196+
[Test]
197+
public void HasTriggerReturnsTrue () {
198+
_stub.InjectCtrl();
199+
200+
Assert.IsTrue(_stub.Animator.HasTrigger("trigger"));
201+
}
202+
203+
[Test]
204+
public void HasTriggerReturnsFalse () {
205+
_stub.InjectCtrl();
206+
207+
Assert.IsFalse(_stub.Animator.HasTrigger("asdf"));
208+
}
209+
210+
[Test]
211+
public void HasTriggerEmptyReturnsFalse () {
212+
_stub.InjectCtrl();
213+
214+
Assert.IsFalse(_stub.Animator.HasTrigger(""));
215+
}
216+
217+
[Test]
218+
public void HasTriggerNullReturnsFalse () {
219+
_stub.InjectCtrl();
220+
221+
Assert.IsFalse(_stub.Animator.HasTrigger(null));
222+
}
223+
}
224+
}

Assets/AdncAnimatorHelpers/Editor/Testing/HasParameter/TestHasParametersExtensions.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using Adnc.AnimatorHelpers.Editors.Testing.Utilities;
2+
using Adnc.AnimatorHelpers.HasParameters;
3+
using Adnc.Utility.Testing;
4+
using NUnit.Framework;
5+
using UnityEngine;
6+
7+
namespace Adnc.AnimatorHelpers.Editors.Testing.HasParameters {
8+
[TestFixture(Category = "HasParameter")]
9+
public class TestHasParametersExtensionsStressTests : TestBase {
10+
private AnimatorStub _stub;
11+
private AnimatorHelperRuntime _runtime;
12+
13+
[SetUp]
14+
public void Setup () {
15+
_runtime = new GameObject("AnimatorRuntime").AddComponent<AnimatorHelperRuntime>();
16+
_stub = new AnimatorStub();
17+
}
18+
19+
[TearDown]
20+
public void Teardown () {
21+
Object.DestroyImmediate(_stub.Animator.gameObject);
22+
_stub = null;
23+
24+
AnimatorHelperRuntime.ClearSingleton();
25+
_runtime = null;
26+
}
27+
28+
[Test]
29+
public void CallWithSingleParameter () {
30+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
31+
name = "bool",
32+
type = AnimatorControllerParameterType.Bool
33+
});
34+
35+
_stub.InjectCtrl();
36+
37+
_stub.Animator.HasBool("bool");
38+
}
39+
40+
[Test]
41+
public void CallWithHundredParameters () {
42+
for (int i = 0; i < 100; i++) {
43+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
44+
name = "bool" + i,
45+
type = AnimatorControllerParameterType.Bool
46+
});
47+
}
48+
49+
_stub.InjectCtrl();
50+
51+
_stub.Animator.HasBool("bool");
52+
}
53+
54+
[Test]
55+
public void CallWithThosandParameters () {
56+
for (int i = 0; i < 1000; i++) {
57+
_stub.AnimatorCtrl.AddParameter(new AnimatorControllerParameter {
58+
name = "bool" + i,
59+
type = AnimatorControllerParameterType.Bool
60+
});
61+
}
62+
63+
_stub.InjectCtrl();
64+
65+
_stub.Animator.HasBool("bool");
66+
}
67+
}
68+
}

Assets/AdncAnimatorHelpers/Editor/Testing/HasParameter/TestHasParametersExtensionsStressTests.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
using Adnc.AnimatorHelpers.HasParameters;
2+
using UnityEngine;
23

34
namespace Adnc.AnimatorHelpers {
45
public class AnimatorHelperRuntime : Singleton<AnimatorHelperRuntime> {
56
public AnimatorParametersCollection parameters = new AnimatorParametersCollection();
7+
8+
public void Cache (Animator animator) {
9+
parameters.SetParameters(animator.runtimeAnimatorController.name, animator);
10+
}
611
}
712
}

Assets/AdncAnimatorHelpers/Scripts/AnimatorHelperRuntime/Singleton.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static void ClearSingleton () {
5757
return;
5858
}
5959

60-
DestroyImmediate(_instance);
60+
DestroyImmediate(_instance.gameObject);
6161
_instance = null;
6262
}
6363
}

0 commit comments

Comments
 (0)