public void Select() { SetUpElements(); UnityEventListenerMock enterListenerMock = new UnityEventListenerMock(); UnityEventListenerMock exitListenerMock = new UnityEventListenerMock(); UnityEventListenerMock hoverListenerMock = new UnityEventListenerMock(); UnityEventListenerMock selectListenerMock = new UnityEventListenerMock(); subject.Entered.AddListener(enterListenerMock.Listen); subject.Exited.AddListener(exitListenerMock.Listen); subject.Hovering.AddListener(hoverListenerMock.Listen); subject.Selected.AddListener(selectListenerMock.Listen); subject.ManualOnEnable(); Assert.IsFalse(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsFalse(hoverListenerMock.Received); Assert.IsFalse(selectListenerMock.Received); subject.Activate(); subject.Process(); subject.Select(); Assert.IsFalse(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsFalse(hoverListenerMock.Received); Assert.IsTrue(selectListenerMock.Received); Assert.IsNull(subject.HoverTarget); enterListenerMock.Reset(); exitListenerMock.Reset(); hoverListenerMock.Reset(); selectListenerMock.Reset(); //Now add a valid target that can be selected GameObject blocker = GameObject.CreatePrimitive(PrimitiveType.Cube); blocker.transform.position = Vector3.forward * 5f; List <Vector3> castPoints = new List <Vector3> { Vector3.zero, blocker.transform.position }; PointsCast.EventData straightCast = CastPoints(castPoints, true, true, new Ray(Vector3.zero, Vector3.forward)); subject.HandleData(straightCast); subject.Process(); subject.Select(); Assert.IsTrue(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsTrue(hoverListenerMock.Received); Assert.IsTrue(selectListenerMock.Received); Assert.AreEqual(blocker, subject.HoverTarget.CollisionData.transform.gameObject); Assert.AreEqual(blocker, subject.SelectedTarget.CollisionData.transform.gameObject); Object.DestroyImmediate(blocker); }
public void Select() { SetUpElements(); UnityEventListenerMock enterListenerMock = new UnityEventListenerMock(); UnityEventListenerMock exitListenerMock = new UnityEventListenerMock(); UnityEventListenerMock hoverListenerMock = new UnityEventListenerMock(); UnityEventListenerMock selectListenerMock = new UnityEventListenerMock(); subject.Entered.AddListener(enterListenerMock.Listen); subject.Exited.AddListener(exitListenerMock.Listen); subject.Hovering.AddListener(hoverListenerMock.Listen); subject.Selected.AddListener(selectListenerMock.Listen); subject.ManualOnEnable(); Assert.IsFalse(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsFalse(hoverListenerMock.Received); Assert.IsFalse(selectListenerMock.Received); subject.Activate(); subject.Process(); subject.Select(); Assert.IsFalse(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsFalse(hoverListenerMock.Received); Assert.IsTrue(selectListenerMock.Received); Assert.IsNull(subject.HoverTarget); enterListenerMock.Reset(); exitListenerMock.Reset(); hoverListenerMock.Reset(); selectListenerMock.Reset(); //Now add a valid target that can be selected GameObject blocker = GameObject.CreatePrimitive(PrimitiveType.Cube); blocker.transform.position = Vector3.forward * 5f; List <Vector3> castPoints = new List <Vector3> { Vector3.zero, blocker.transform.position }; PointsCast.EventData straightCast = CastPoints(castPoints, true, true, new Ray(Vector3.zero, Vector3.forward)); subject.HandleData(straightCast); subject.Process(); subject.Select(); Assert.IsTrue(enterListenerMock.Received); Assert.IsFalse(exitListenerMock.Received); Assert.IsTrue(hoverListenerMock.Received); Assert.IsTrue(selectListenerMock.Received); Assert.AreEqual(subject.transform, subject.HoverTarget.Transform); Assert.AreEqual(blocker, subject.HoverTarget.CollisionData.transform.gameObject); Assert.AreEqual(blocker, subject.SelectedTarget.CollisionData.transform.gameObject); Assert.AreEqual("{ Transform = containingObject (UnityEngine.Transform) | UseLocalValues = False | PositionOverride = (0.0, 0.0, 0.0) | RotationOverride = (0.0, 0.0, 0.0, 1.0) | ScaleOverride = (1.0, 1.0, 1.0) | Origin = (0.0, 0.0, 0.0) | Direction = (0.0, 0.0, 1.0) | CollisionData = { barycentricCoordinate = (1.0, 0.0, 0.0) | Collider = Cube (UnityEngine.BoxCollider) | Distance = 4.5 | Lightmap Coord = (0.0, 0.0) | Normal = (0.0, 0.0, -1.0) | Point = (0.0, 0.0, 4.5) | Rigidbody = [null] | Texture Coord = (0.0, 0.0) | Texture Coord2 = (0.0, 0.0) | Transform = Cube (UnityEngine.Transform) | Triangle Index = -1 } | IsCurrentlyActive = True | IsCurrentlyHovering = True | CurrentHoverDuration = " + subject.SelectedTarget.CurrentHoverDuration + " | CurrentPointsCastData = { HitData = { barycentricCoordinate = (1.0, 0.0, 0.0) | Collider = Cube (UnityEngine.BoxCollider) | Distance = 4.5 | Lightmap Coord = (0.0, 0.0) | Normal = (0.0, 0.0, -1.0) | Point = (0.0, 0.0, 4.5) | Rigidbody = [null] | Texture Coord = (0.0, 0.0) | Texture Coord2 = (0.0, 0.0) | Transform = Cube (UnityEngine.Transform) | Triangle Index = -1 } | IsValid = True } }", subject.SelectedTarget.ToString()); Object.DestroyImmediate(blocker); }