Skip to content

Commit d005217

Browse files
author
Julia Schwarz
committed
move and rename test methods based on Troy's comments
1 parent ad66e96 commit d005217

File tree

1 file changed

+69
-72
lines changed

1 file changed

+69
-72
lines changed

Assets/MixedRealityToolkit.Tests/PlayModeTests/PointerTests.cs

Lines changed: 69 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public IEnumerator TestLinePointers()
106106
/// bounds are outside the camera FOV.
107107
/// </summary>
108108
[UnityTest]
109-
public IEnumerator TestPointerFieldOfViewLargeCollider()
109+
public IEnumerator TestPointerFOVLargeCollider()
110110
{
111111
var rightHand = new TestHand(Handedness.Right);
112112
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
@@ -120,47 +120,19 @@ public IEnumerator TestPointerFieldOfViewLargeCollider()
120120
var spherePointer = PointerUtils.GetPointer<SpherePointer>(Handedness.Right);
121121
var pokePointer = PointerUtils.GetPointer<PokePointer>(Handedness.Right);
122122

123-
yield return TestPointerFieldOfViewLargeColliderHelper(spherePointer, cube, rightHand);
124-
yield return TestPointerFieldOfViewLargeColliderHelper(pokePointer, cube, rightHand);
123+
yield return TestPointerFOVLargeColliderHelper(spherePointer, cube, rightHand);
124+
yield return TestPointerFOVLargeColliderHelper(pokePointer, cube, rightHand);
125125

126126
rightHand.Hide();
127127
GameObject.Destroy(cube);
128128
}
129129

130-
131-
private IEnumerator TestPointerFieldOfViewLargeColliderHelper(IMixedRealityPointer myPointer, GameObject cube, TestHand testHand)
132-
{
133-
cube.transform.localScale = new Vector3(3, 3, 0.05f);
134-
float[] yOffsets = new float[] { -1f, 0f, 1f };
135-
float[] xOffsets = new float[] { -1f, 0f, 1f };
136-
float[] zOffsets = new float[] { 1f, -1f };
137-
138-
foreach (var zOffset in zOffsets)
139-
{
140-
foreach (var yOffset in yOffsets)
141-
{
142-
foreach (var xOffset in xOffsets)
143-
{
144-
var cameraPos = CameraCache.Main.transform.position;
145-
var pos = new Vector3(cameraPos.x + xOffset, cameraPos.y + yOffset, cameraPos.z + zOffset);
146-
cube.transform.position = pos;
147-
yield return testHand.MoveTo(cube.transform.position);
148-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
149-
bool isInFov = CameraCache.Main.IsInFOVCached(cube.GetComponent<BoxCollider>());
150-
Assert.IsTrue(zOffset == 1f ? myPointer.IsInteractionEnabled : !myPointer.IsInteractionEnabled,
151-
$"Pointer {myPointer.PointerName} in incorrect state. IsInFOV {isInFov} Cube size {cube.transform.localScale} location {cube.transform.position}.");
152-
}
153-
}
154-
}
155-
}
156-
157-
158130
/// <summary>
159131
/// Tests that pointers behave correctly when interacting with objects inside and outside
160132
/// its field of view
161133
/// </summary>
162134
[UnityTest]
163-
public IEnumerator TestPointerFieldOfView()
135+
public IEnumerator TestPointerFOV()
164136
{
165137
var rightHand = new TestHand(Handedness.Right);
166138
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
@@ -174,51 +146,13 @@ public IEnumerator TestPointerFieldOfView()
174146
var spherePointer = PointerUtils.GetPointer<SpherePointer>(Handedness.Right);
175147
var pokePointer = PointerUtils.GetPointer<PokePointer>(Handedness.Right);
176148

177-
yield return TestPointerFieldOfViewHelper(spherePointer, cube, rightHand);
178-
yield return TestPointerFieldOfViewHelper(pokePointer, cube, rightHand);
149+
yield return TestPointerFOVHelper(spherePointer, cube, rightHand);
150+
yield return TestPointerFOVHelper(pokePointer, cube, rightHand);
179151

180152
rightHand.Hide();
181153
GameObject.Destroy(cube);
182154
}
183155

184-
private IEnumerator TestPointerFieldOfViewHelper(IMixedRealityPointer myPointer, GameObject cube, TestHand testHand)
185-
{
186-
// Cube in front of camera
187-
cube.transform.SetPositionAndRotation(Vector3.forward * 1f, Quaternion.identity);
188-
cube.transform.localScale = Vector3.one * 0.1f;
189-
yield return testHand.MoveTo(cube.transform.position);
190-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
191-
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled, cube in front camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
192-
193-
// Cube above camera
194-
cube.transform.Translate(Vector3.up * 10);
195-
yield return testHand.MoveTo(cube.transform.position);
196-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
197-
Assert.IsFalse(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should NOT be enabled, cube behind camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
198-
199-
// For sphere and poke pointers, test that setting IgnoreCollidersNotInFOV works
200-
if (myPointer is SpherePointer spherePointer)
201-
{
202-
spherePointer.IgnoreCollidersNotInFOV = false;
203-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
204-
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because IgnoreCollidersNotInFOV is false.");
205-
spherePointer.IgnoreCollidersNotInFOV = true;
206-
}
207-
else if (myPointer is PokePointer pokePointer)
208-
{
209-
pokePointer.IgnoreCollidersNotInFOV = false;
210-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
211-
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because IgnoreCollidersNotInFOV is false.");
212-
pokePointer.IgnoreCollidersNotInFOV = true;
213-
}
214-
215-
// Move it back to be visible again
216-
cube.transform.Translate(Vector3.up * -10f);
217-
yield return testHand.MoveTo(cube.transform.position);
218-
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
219-
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because it is near object inside of FOV. Cube size {cube.transform.localScale} location {cube.transform.position}.");
220-
}
221-
222156
/// <summary>
223157
/// Tests that sphere pointer grabs object when hand is inside a giant grabbable
224158
/// </summary>
@@ -423,6 +357,69 @@ private static T CreatePointerPrefab<T>(string prefabPath,
423357
return pointer;
424358
}
425359

360+
private IEnumerator TestPointerFOVHelper(IMixedRealityPointer myPointer, GameObject cube, TestHand testHand)
361+
{
362+
// Cube in front of camera
363+
cube.transform.SetPositionAndRotation(Vector3.forward * 1f, Quaternion.identity);
364+
cube.transform.localScale = Vector3.one * 0.1f;
365+
yield return testHand.MoveTo(cube.transform.position);
366+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
367+
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled, cube in front camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
368+
369+
// Cube above camera
370+
cube.transform.Translate(Vector3.up * 10);
371+
yield return testHand.MoveTo(cube.transform.position);
372+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
373+
Assert.IsFalse(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should NOT be enabled, cube behind camera. Cube size {cube.transform.localScale} location {cube.transform.position}.");
374+
375+
// For sphere and poke pointers, test that setting IgnoreCollidersNotInFOV works
376+
if (myPointer is SpherePointer spherePointer)
377+
{
378+
spherePointer.IgnoreCollidersNotInFOV = false;
379+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
380+
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because IgnoreCollidersNotInFOV is false.");
381+
spherePointer.IgnoreCollidersNotInFOV = true;
382+
}
383+
else if (myPointer is PokePointer pokePointer)
384+
{
385+
pokePointer.IgnoreCollidersNotInFOV = false;
386+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
387+
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because IgnoreCollidersNotInFOV is false.");
388+
pokePointer.IgnoreCollidersNotInFOV = true;
389+
}
390+
391+
// Move it back to be visible again
392+
cube.transform.Translate(Vector3.up * -10f);
393+
yield return testHand.MoveTo(cube.transform.position);
394+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
395+
Assert.IsTrue(myPointer.IsInteractionEnabled, $"Pointer {myPointer.PointerName} should be enabled because it is near object inside of FOV. Cube size {cube.transform.localScale} location {cube.transform.position}.");
396+
}
397+
398+
private IEnumerator TestPointerFOVLargeColliderHelper(IMixedRealityPointer myPointer, GameObject cube, TestHand testHand)
399+
{
400+
cube.transform.localScale = new Vector3(3, 3, 0.05f);
401+
float[] yOffsets = new float[] { -1f, 0f, 1f };
402+
float[] xOffsets = new float[] { -1f, 0f, 1f };
403+
float[] zOffsets = new float[] { 1f, -1f };
404+
var collider = cube.GetComponent<BoxCollider>();
405+
foreach (var zOffset in zOffsets)
406+
{
407+
foreach (var yOffset in yOffsets)
408+
{
409+
foreach (var xOffset in xOffsets)
410+
{
411+
var cameraPos = CameraCache.Main.transform.position;
412+
var pos = new Vector3(cameraPos.x + xOffset, cameraPos.y + yOffset, cameraPos.z + zOffset);
413+
cube.transform.position = pos;
414+
yield return testHand.MoveTo(cube.transform.position);
415+
yield return PlayModeTestUtilities.WaitForInputSystemUpdate();
416+
bool isInFov = CameraCache.Main.IsInFOVCached(collider);
417+
Assert.IsTrue(zOffset == 1f ? myPointer.IsInteractionEnabled : !myPointer.IsInteractionEnabled,
418+
$"Pointer {myPointer.PointerName} in incorrect state. IsInFOV {isInFov} Cube size {cube.transform.localScale} location {cube.transform.position}.");
419+
}
420+
}
421+
}
422+
}
426423
#endregion
427424
}
428425
}

0 commit comments

Comments
 (0)