public void NewInputModalityEvent(ModalityEvent modalityAction) { Actions.Add(modalityAction); List<EffectTrigger> matchingTriggers = SearchTriggers(modalityAction); TriggerEffects(matchingTriggers); }
public void HasEventTest() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; target.Triggers.Add(modalityEvent); ModalityEvent newModalityEvent = new ModalityEvent(); newModalityEvent.Type = ActionType.HAND_SWIPE_LEFT; Assert.AreEqual(true, target.HasEvent(newModalityEvent)); }
public List<EffectTrigger> SearchTriggers(ModalityEvent newModalityEvent) { List<EffectTrigger> results = new List<EffectTrigger>(); foreach (var trigger in Triggers) { foreach (var modality in trigger.Triggers) { if (trigger.HasEvent(modality)) { trigger.SetNewEvent(newModalityEvent); if(trigger.IsReadyToTrigger(ClockInstance.CurrentTimeInMillis())) { results.Add(trigger); } } } } return results; }
public void SetThreeEventsTriggerWithTimeWindowAndIsAbleToTriggerIncorrectTimeTest() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; ModalityEvent modalityEvent3 = new ModalityEvent(); modalityEvent3.Type = ActionType.POSTURE_DIRECTION_KINECT; target.Triggers.Add(modalityEvent1); target.Triggers.Add(modalityEvent2); target.Triggers.Add(modalityEvent3); //Set the time windows constraint target.TimeWindow = 1500; ModalityEvent newModalityEvent1 = new ModalityEvent(); newModalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; newModalityEvent1.EventTime = 1000; ModalityEvent newModalityEvent2 = new ModalityEvent(); newModalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; newModalityEvent2.EventTime = 1500; ModalityEvent newModalityEvent3 = new ModalityEvent(); newModalityEvent3.Type = ActionType.POSTURE_DIRECTION_KINECT; newModalityEvent3.EventTime = 3000; Assert.AreEqual(true, target.HasEvent(newModalityEvent1)); Assert.AreEqual(true, target.HasEvent(newModalityEvent2)); Assert.AreEqual(true, target.HasEvent(newModalityEvent3)); target.SetNewEvent(newModalityEvent1); Assert.AreEqual(false, target.IsReadyToTrigger(1001)); target.SetNewEvent(newModalityEvent2); Assert.AreEqual(false, target.IsReadyToTrigger(1550)); target.SetNewEvent(newModalityEvent3); Assert.AreEqual(false, target.IsReadyToTrigger(3001)); }
public void NewEventUpdateTimeAndStateTest() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; target.Triggers.Add(modalityEvent); ModalityEvent newModalityEvent = new ModalityEvent(); newModalityEvent.Type = ActionType.HAND_SWIPE_LEFT; newModalityEvent.EventTime = 1000; target.SetNewEvent(newModalityEvent); Assert.AreEqual(target.Triggers[0].EventTime, 1000); newModalityEvent = new ModalityEvent(); newModalityEvent.Type = ActionType.HAND_SWIPE_LEFT; newModalityEvent.EventTime = 2500; target.SetNewEvent(newModalityEvent); Assert.AreEqual(target.Triggers[0].EventTime, 2500); }
public void SetTwoEventTriggerWithTimeWindowAndIsNotAbleToTriggerOnIncorrectTimeTest() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; target.Triggers.Add(modalityEvent1); target.Triggers.Add(modalityEvent2); //Set the time windows constraint target.TimeWindow = 2000; ModalityEvent newModalityEvent1 = new ModalityEvent(); newModalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; newModalityEvent1.EventTime = 1000; ModalityEvent newModalityEvent2 = new ModalityEvent(); newModalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; newModalityEvent2.EventTime = 3001; Assert.AreEqual(true, target.HasEvent(newModalityEvent1)); Assert.AreEqual(true, target.HasEvent(newModalityEvent2)); target.SetNewEvent(newModalityEvent1); Assert.AreEqual(false, target.IsReadyToTrigger(1001)); target.SetNewEvent(newModalityEvent2); Assert.AreEqual(false, target.IsReadyToTrigger(3002)); }
public void SetTwoEventsTriggerAndIsNotAbleToTrigger() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; target.Triggers.Add(modalityEvent1); target.Triggers.Add(modalityEvent2); ModalityEvent newModalityEvent1 = new ModalityEvent(); newModalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent newModalityEvent2 = new ModalityEvent(); newModalityEvent2.Type = ActionType.SPEECH_NEXT; Assert.AreEqual(true, target.HasEvent(newModalityEvent1)); Assert.AreEqual(false, target.HasEvent(newModalityEvent2)); target.SetNewEvent(newModalityEvent1); Assert.AreEqual(false, target.IsReadyToTrigger(0)); target.SetNewEvent(newModalityEvent2); Assert.AreEqual(false, target.IsReadyToTrigger(0)); }
public void SetOneEventTriggerAndIsNotAbleToTrigger() { EffectTrigger target = new EffectTrigger(); ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; target.Triggers.Add(modalityEvent); ModalityEvent newModalityEvent = new ModalityEvent(); newModalityEvent.Type = ActionType.HAND_SWIPE_RIGHT; Assert.AreEqual(false, target.HasEvent(newModalityEvent)); target.SetNewEvent(newModalityEvent); Assert.AreEqual(false, target.IsReadyToTrigger(0)); }
public void AddOneEffectTriggerAndTriggerIt() { MultimodalEngine target = new MultimodalEngine(); ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent); target.addNewTrigger(effectTrigger); //Prepare future event ModalityEvent action = new ModalityEvent(); action.Type = ActionType.HAND_SWIPE_LEFT; //trigger it target.NewInputModalityEvent(action); //Verify triggering effect.Verify(foo => foo.execute()); }
public void AVoiceCommandShouldNotTriggerWithoutPostureDirectionTest() { var mock = new Mock<Clock>(); var timeInMilliseconds = 0; mock.Setup(foo => foo.CurrentTimeInMillis()) .Returns(() => timeInMilliseconds); MultimodalEngine target = new MultimodalEngine(); target.ClockInstance = mock.Object; ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.POSTURE_DIRECTION_KINECT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.SPEECH_NEXT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent1); effectTrigger.Triggers.Add(modalityEvent2); effectTrigger.TimeWindow = 1000; target.addNewTrigger(effectTrigger); ModalityEvent action2 = new ModalityEvent(); action2.Type = ActionType.SPEECH_NEXT; action2.EventTime = 1500; timeInMilliseconds = 1600; target.NewInputModalityEvent(action2); effect.Verify(foo => foo.execute(), Times.Never()); }
public void AddComposedTriggerEffectAndDontTriggerItWithTimeContrainst() { var mock = new Mock<Clock>(); var timeInMilliseconds = 0; mock.Setup(foo => foo.CurrentTimeInMillis()) .Returns(() => timeInMilliseconds); MultimodalEngine target = new MultimodalEngine(); target.ClockInstance = mock.Object; ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent1); effectTrigger.Triggers.Add(modalityEvent2); effectTrigger.TimeWindow = 1000; target.addNewTrigger(effectTrigger); //Prepare future event1 ModalityEvent action1 = new ModalityEvent(); action1.Type = ActionType.HAND_SWIPE_LEFT; action1.EventTime = 1000; timeInMilliseconds = 1001; target.NewInputModalityEvent(action1); //Was not trigger yet effect.Verify(foo => foo.execute(), Times.Never()); //Prepare future event2 ModalityEvent action2 = new ModalityEvent(); action2.Type = ActionType.HAND_SWIPE_RIGHT; action2.EventTime = 3001; timeInMilliseconds = 3001; target.NewInputModalityEvent(action2); effect.Verify(foo => foo.execute(), Times.Never()); }
public void AddOneEffectTriggerAndDontTriggerItTimeHasPassed() { var mock = new Mock<Clock>(); var timeInMilliseconds = 0; mock.Setup(foo => foo.CurrentTimeInMillis()) .Returns(() => timeInMilliseconds); MultimodalEngine target = new MultimodalEngine(); target.ClockInstance = mock.Object; ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent); effectTrigger.TimeWindow = 1000; target.addNewTrigger(effectTrigger); //Prepare future event ModalityEvent action = new ModalityEvent(); action.Type = ActionType.HAND_SWIPE_LEFT; action.EventTime = 1000; //trigger it timeInMilliseconds = 3000; target.NewInputModalityEvent(action); //Verify triggering effect.Verify(foo => foo.execute(), Times.Never()); }
public void AddOneTriggerAndTriggersOnCorrectTimePassed() { MultimodalEngine target = new MultimodalEngine(); ModalityEvent modalityEvent = new ModalityEvent(); modalityEvent.Type = ActionType.HAND_SWIPE_LEFT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent); target.addNewTrigger(effectTrigger); //Prepare future event ModalityEvent action = new ModalityEvent(); action.Type = ActionType.HAND_SWIPE_RIGHT; //add event target.NewInputModalityEvent(action); }
public void AddComposedTriggerEffectAndTriggerIt() { MultimodalEngine target = new MultimodalEngine(); ModalityEvent modalityEvent1 = new ModalityEvent(); modalityEvent1.Type = ActionType.HAND_SWIPE_LEFT; ModalityEvent modalityEvent2 = new ModalityEvent(); modalityEvent2.Type = ActionType.HAND_SWIPE_RIGHT; var effect = new Mock<IEffect>(); //Define trigger with one input modality event that triggers one effect EffectTrigger effectTrigger = new EffectTrigger(); effectTrigger.Effects.Add(effect.Object); effectTrigger.Triggers.Add(modalityEvent1); effectTrigger.Triggers.Add(modalityEvent2); target.addNewTrigger(effectTrigger); //Prepare future event1 ModalityEvent action1 = new ModalityEvent(); action1.Type = ActionType.HAND_SWIPE_LEFT; action1.EventTime = 1000; target.NewInputModalityEvent(action1); //Was not trigger yet effect.Verify(foo => foo.execute(), Times.Never()); //Prepare future event2 ModalityEvent action2 = new ModalityEvent(); action2.Type = ActionType.HAND_SWIPE_RIGHT; target.NewInputModalityEvent(action2); effect.Verify(foo => foo.execute()); }