public void triggerFirstCallbackWhenTouchedOnFirstHintCall() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var singleActionResponse = new Dictionary <GameObject, ActionResponsePair[]> { { gameObject.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } } }; using (factory.Ordered()) { // touch on first tick expectTouchWithinSprite(sprite.MockObject, true); sensor.Expects.One.MethodWith(_ => _.hasTaps()).WillReturn(true); // no touch on second tick expectTouchWithinSprite(sprite.MockObject, false); } bool hintTriggered = false; bool secondHintTriggered = false; Action <GameObject> setHintTriggered = GameObject => { hintTriggered = true; }; Action <GameObject> setSecondHintTriggered = GameObject => { secondHintTriggered = true; }; messagePromptCoordinator.hintWhenTouched( setHintTriggered, sensor.MockObject, beforeEverything, singleActionResponse ); messagePromptCoordinator.Update(beforeEverything); messagePromptCoordinator.hintWhenTouched( setSecondHintTriggered, sensor.MockObject, beforeMessageTime, singleActionResponse ); messagePromptCoordinator.Update(beforeMessageTime); messagePromptCoordinator.hintWhenTouched( setSecondHintTriggered, sensor.MockObject, afterMessageTime, singleActionResponse ); messagePromptCoordinator.Update(afterMessageTime); Assert.That(hintTriggered, Iz.True); Assert.That(secondHintTriggered, Iz.False); }
public void failToTriggerAnyCallbackWhenTouchedOnSecondHintCall() { var messagePromptCoordinator = new MessagePromptCoordinator (prompt, messageBox); var singleActionResponse = new Dictionary<Sprite, ActionResponsePair[]> { {mocks.DynamicMock<Sprite>(), new [] {new ActionResponsePair("action", new[] {"response"})}} }; using (mocks.Ordered()) { Expect.Call (sensor.insideSprite (null, null, new[] {TouchInput.TouchPhase.Began})) .Constraints(Rhino.Mocks.Constraints.Is.Anything(), Rhino.Mocks.Constraints.Is.Anything(), Rhino.Mocks.Constraints.Is.Equal(new[] {TouchInput.TouchPhase.Began})) .Return (false); // touch on second tick Expect.Call (sensor.insideSprite (null, null, new[] {TouchInput.TouchPhase.Began})) .Constraints(Rhino.Mocks.Constraints.Is.Anything(), Rhino.Mocks.Constraints.Is.Anything(), Rhino.Mocks.Constraints.Is.Equal(new[] {TouchInput.TouchPhase.Began})) .Return (true); Expect.Call(sensor.hasTaps()).Return(true); } mocks.ReplayAll (); bool hintTriggered = false; bool secondHintTriggered = false; Action<Sprite> setHintTriggered = GameObject => { hintTriggered = true; }; Action<Sprite> setSecondHintTriggered = GameObject => { secondHintTriggered = true; }; messagePromptCoordinator.hintWhenTouched ( setHintTriggered, sensor, beforeEverything, singleActionResponse ); messagePromptCoordinator.Update (beforeEverything); messagePromptCoordinator.hintWhenTouched ( setSecondHintTriggered, sensor, beforeMessageTime, singleActionResponse ); messagePromptCoordinator.Update(beforeMessageTime); messagePromptCoordinator.hintWhenTouched ( setSecondHintTriggered, sensor, afterMessageTime, singleActionResponse ); messagePromptCoordinator.Update(afterMessageTime); Assert.That (hintTriggered, Is.False); Assert.That (secondHintTriggered, Is.False); mocks.VerifyAll (); }
public void failToTriggerAnyCallbackWhenTouchedOnSecondHintCall() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var singleActionResponse = new Dictionary<GameObject, ActionResponsePair[]> { { gameObject.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } } }; using (factory.Ordered()) { expectTouchWithinSprite(sprite.MockObject, false); // touch on second tick expectTouchWithinSprite(sprite.MockObject, true); sensor.Expects.One.MethodWith(_ => _.hasTaps()).WillReturn(true); } bool hintTriggered = false; bool secondHintTriggered = false; Action<GameObject> setHintTriggered = GameObject => { hintTriggered = true; }; Action<GameObject> setSecondHintTriggered = GameObject => { secondHintTriggered = true; }; messagePromptCoordinator.hintWhenTouched( setHintTriggered, sensor.MockObject, beforeEverything, singleActionResponse ); messagePromptCoordinator.Update(beforeEverything); messagePromptCoordinator.hintWhenTouched( setSecondHintTriggered, sensor.MockObject, beforeMessageTime, singleActionResponse ); messagePromptCoordinator.Update(beforeMessageTime); messagePromptCoordinator.hintWhenTouched( setSecondHintTriggered, sensor.MockObject, afterMessageTime, singleActionResponse ); messagePromptCoordinator.Update(afterMessageTime); Assert.That(hintTriggered, Iz.False); Assert.That(secondHintTriggered, Iz.False); }
public void triggerWhenTouchedAndTimeElapsed() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var singleActionResponse = new Dictionary <GameObject, ActionResponsePair[]> { { gameObject.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } } }; using (factory.Ordered()) { expectTouchWithinSprite(sprite.MockObject, true); expectTouchWithinSprite(sprite.MockObject, false); } bool hintTriggered = false; messagePromptCoordinator.hintWhenTouched( GameObject => { hintTriggered = true; }, sensor.MockObject, beforeEverything, singleActionResponse ); messagePromptCoordinator.Update(beforeEverything); Assert.That(hintTriggered, Iz.False); messagePromptCoordinator.hintWhenTouched( GameObject => { hintTriggered = true; }, sensor.MockObject, afterMessageTime, singleActionResponse ); messagePromptCoordinator.Update(afterMessageTime); Assert.That(hintTriggered, Iz.True); }
public void doesNotTriggerWhenNotTouched() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); messagePromptCoordinator.hintWhenTouched( GameObject => Assert.Fail(), sensor.MockObject, beforeEverything, new Dictionary<GameObject, ActionResponsePair[]> { } ); messagePromptCoordinator.Update(beforeEverything); }
public void doesNotTriggerWhenNotTouched() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); messagePromptCoordinator.hintWhenTouched( GameObject => Assert.Fail(), sensor.MockObject, beforeEverything, new Dictionary <GameObject, ActionResponsePair[]> { } ); messagePromptCoordinator.Update(beforeEverything); }
public void triggersFrontMostObjectWhenObjectsOverlap() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var first = factory.CreateMock <GameObject>(); first.Expects.Any.Method(_ => _.GetComponent <Sprite>()).WillReturn(sprite.MockObject); var second = factory.CreateMock <GameObject>(); second.Expects.Any.Method(_ => _.GetComponent <Sprite>()).WillReturn(sprite.MockObject); var back = new Vector3(0, 0, 0); var backTransform = new Transform() { position = back }; var front = new Vector3(0, 0, -1); var frontTransform = new Transform() { position = front }; // if you think this looks weird, it is. we can't mock bareback public fields, and Unity is full of them. first.MockObject.transform = backTransform; second.MockObject.transform = frontTransform; var frontObjectResponse = "front object response"; var frontObjectAction = "action2"; var actionResponses = new Dictionary <GameObject, ActionResponsePair[]> { { first.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } }, { second.MockObject, new [] { new ActionResponsePair(frontObjectAction, new[] { frontObjectResponse }) } } }; using (factory.Ordered()) { expectTouchWithinSprite(sprite.MockObject, true); expectTouchWithinSprite(sprite.MockObject, false); expectTouchWithinSprite(sprite.MockObject, true); } messagePromptCoordinator.hintWhenTouched( GameObject => { }, sensor.MockObject, beforeEverything, actionResponses ); messagePromptCoordinator.Update(beforeEverything); GameObject triggeredObject = null; messageBox.Expects.One.Method(_ => _.setMessage("")).With(Is.EqualTo(frontObjectResponse)); messageBox.Expects.One.Method(_ => _.hide()); messageBox.Expects.One.Method(_ => _.show()); prompt.Expects.One.Method(_ => _.setText("")).With(Is.EqualTo(frontObjectAction)); prompt.Expects.One.Method(_ => _.hide()); prompt.Expects.One.Method(_ => _.show()); messagePromptCoordinator.hintWhenTouched( gameObject => { triggeredObject = gameObject; }, sensor.MockObject, afterMessageTime, actionResponses ); messageBox.Expects.One.Method(_ => _.hide()); messagePromptCoordinator.Update(afterMessageTime + MessagePromptCoordinator.promptTime + 0.1f); Assert.That(triggeredObject, Iz.EqualTo(second.MockObject)); }
public void triggerWhenTouchedAndTimeElapsed() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var singleActionResponse = new Dictionary<GameObject, ActionResponsePair[]> { { gameObject.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } } }; using (factory.Ordered()) { expectTouchWithinSprite(sprite.MockObject, true); expectTouchWithinSprite(sprite.MockObject, false); } bool hintTriggered = false; messagePromptCoordinator.hintWhenTouched( GameObject => { hintTriggered = true; }, sensor.MockObject, beforeEverything, singleActionResponse ); messagePromptCoordinator.Update(beforeEverything); Assert.That(hintTriggered, Iz.False); messagePromptCoordinator.hintWhenTouched( GameObject => { hintTriggered = true; }, sensor.MockObject, afterMessageTime, singleActionResponse ); messagePromptCoordinator.Update(afterMessageTime); Assert.That(hintTriggered, Iz.True); }
public void triggersFrontMostObjectWhenObjectsOverlap() { var messagePromptCoordinator = new MessagePromptCoordinator(prompt.MockObject, messageBox.MockObject); var first = factory.CreateMock<GameObject>(); first.Expects.Any.Method(_ => _.GetComponent<Sprite>()).WillReturn(sprite.MockObject); var second = factory.CreateMock<GameObject>(); second.Expects.Any.Method(_ => _.GetComponent<Sprite>()).WillReturn(sprite.MockObject); var back = new Vector3(0, 0, 0); var backTransform = new Transform() { position = back }; var front = new Vector3(0, 0, -1); var frontTransform = new Transform() { position = front }; // if you think this looks weird, it is. we can't mock bareback public fields, and Unity is full of them. first.MockObject.transform = backTransform; second.MockObject.transform = frontTransform; var frontObjectResponse = "front object response"; var frontObjectAction = "action2"; var actionResponses = new Dictionary<GameObject, ActionResponsePair[]> { { first.MockObject, new [] { new ActionResponsePair("action", new[] { "response" }) } }, { second.MockObject, new [] { new ActionResponsePair(frontObjectAction, new[] { frontObjectResponse }) } } }; using (factory.Ordered()) { expectTouchWithinSprite(sprite.MockObject, true); expectTouchWithinSprite(sprite.MockObject, false); expectTouchWithinSprite(sprite.MockObject, true); } messagePromptCoordinator.hintWhenTouched( GameObject => { }, sensor.MockObject, beforeEverything, actionResponses ); messagePromptCoordinator.Update(beforeEverything); GameObject triggeredObject = null; messageBox.Expects.One.Method(_ => _.setMessage("")).With(Is.EqualTo(frontObjectResponse)); messageBox.Expects.One.Method(_ => _.hide()); messageBox.Expects.One.Method(_ => _.show()); prompt.Expects.One.Method(_ => _.setText("")).With(Is.EqualTo(frontObjectAction)); prompt.Expects.One.Method(_ => _.hide()); prompt.Expects.One.Method(_ => _.show()); messagePromptCoordinator.hintWhenTouched( gameObject => { triggeredObject = gameObject; }, sensor.MockObject, afterMessageTime, actionResponses ); messageBox.Expects.One.Method(_ => _.hide()); messagePromptCoordinator.Update(afterMessageTime + MessagePromptCoordinator.promptTime + 0.1f); Assert.That(triggeredObject, Iz.EqualTo(second.MockObject)); }
public void hintWhenTouched(Action<GameObject> onCompleted, MessagePromptCoordinator messagePromptCoordinator, TouchSensor touch) { messagePromptCoordinator.hintWhenTouched(onCompleted, touch, Time.time, interactions); }
public void hintWhenTouched(Action<Sprite> onCompleted, MessagePromptCoordinator messagePromptCoordinator, TouchSensor touch) { if (interactions == null) { interactions = new Dictionary<Sprite, ActionResponsePair[]> { {clipBoard, new [] {new ActionResponsePair("look at chart", new [] {"even the doctors don't understand the test results"})}}, {zzz, new [] {new ActionResponsePair("catch z", new [] {"that's not going to wake him up"})}}, {heartRate, new [] {new ActionResponsePair("look at monitor", new []{"things are stable, for now"})}}, {cover, new [] {new ActionResponsePair("prod him", new[] {"He doesn't want to wake up"}), new ActionResponsePair("prod him until he wakes up", new [] {"OK"}), new ActionResponsePair("expose him to the cold", new [] { "you remove the blankets, security and otherwise.", "there are now two distinct halves.", "are they the same person?"}), }}, }; } messagePromptCoordinator.hintWhenTouched(onCompleted, touch, Time.time, interactions); }
public void hintWhenTouched(Action <GameObject> onCompleted, MessagePromptCoordinator messagePromptCoordinator, TouchSensor touch) { messagePromptCoordinator.hintWhenTouched(onCompleted, touch, Time.time, interactions); }