public void Should_TurnOn_IfButtonPressedShort() { var testController = new TestController(); var automation = new TurnOnAndOffAutomation( "Test", testController.GetInstance <IDateTimeService>(), testController.GetInstance <ISchedulerService>(), testController.GetInstance <ISettingsService>(), testController.GetInstance <IDaylightService>(), testController.GetInstance <IMessageBrokerService>()); var buttonAdapter = new TestButtonAdapter(); var button = new Button("Test", buttonAdapter, testController.GetInstance <ITimerService>(), testController.GetInstance <ISettingsService>(), testController.GetInstance <IMessageBrokerService>(), testController.GetInstance <ILogService>()); var output = new Lamp("Test", new TestLampAdapter()); Assert.AreEqual(true, output.GetState().Has(PowerState.Off)); automation.WithTrigger(button.CreatePressedShortTrigger(testController.GetInstance <IMessageBrokerService>())); automation.WithTarget(output); buttonAdapter.Touch(); Assert.AreEqual(true, output.GetState().Has(PowerState.On)); }
public void Automation_Toggle() { var testController = new TestController(); var buttonAdapter = new TestButtonAdapter(); var button = new Button("Test", buttonAdapter, testController.GetInstance <ITimerService>(), testController.GetInstance <ISettingsService>()); var testOutput = new Lamp("Test", new TestLampAdapter()); new Automation("Test") .WithTrigger(button.PressedShortTrigger) .WithActionIfConditionsFulfilled(() => testOutput.TryTogglePowerState()); Assert.IsTrue(testOutput.GetState().Has(PowerState.Off)); buttonAdapter.Touch(); Assert.IsTrue(testOutput.GetState().Has(PowerState.On)); buttonAdapter.Touch(); Assert.IsTrue(testOutput.GetState().Has(PowerState.Off)); buttonAdapter.Touch(); Assert.IsTrue(testOutput.GetState().Has(PowerState.On)); }
public void Should_TurnOff_IfButtonPressed_WhileTargetIsAlreadyOn() { var testController = new TestController(); testController.SetTime(TimeSpan.Parse("14:00:00")); var automation = new TurnOnAndOffAutomation( "Test", testController.GetInstance <IDateTimeService>(), testController.GetInstance <ISchedulerService>(), testController.GetInstance <ISettingsService>(), testController.GetInstance <IDaylightService>(), testController.GetInstance <IMessageBrokerService>()); var buttonAdapter = new TestButtonAdapter(); var button = new Button("Test", buttonAdapter, testController.GetInstance <ITimerService>(), testController.GetInstance <ISettingsService>(), testController.GetInstance <IMessageBrokerService>(), testController.GetInstance <ILogService>()); var output = new Lamp("Test", new TestLampAdapter()); Assert.AreEqual(true, output.GetState().Has(PowerState.Off)); automation.WithTrigger(button.CreatePressedShortTrigger(testController.GetInstance <IMessageBrokerService>())); automation.WithTarget(output); IComponent[] otherActuators = { new Lamp("Test", new TestLampAdapter()), new Lamp("Test", new TestLampAdapter()) }; automation.WithSkipIfAnyIsAlreadyOn(otherActuators); buttonAdapter.Touch(); Assert.AreEqual(true, output.GetState().Has(PowerState.On)); buttonAdapter.Touch(); Assert.AreEqual(true, output.GetState().Has(PowerState.On)); automation.WithTurnOffIfButtonPressedWhileAlreadyOn(); buttonAdapter.Touch(); Assert.AreEqual(true, output.GetState().Has(PowerState.Off)); }
public void Button_PressedShortlyTrigger() { var testController = new TestController(); var buttonAdapter = new TestButtonAdapter(); var button = new Button("Test", buttonAdapter, testController.GetInstance <ITimerService>(), testController.GetInstance <ISettingsService>()); var triggerRaised = false; button.PressedShortTrigger.Attach(() => triggerRaised = true); Assert.IsTrue(button.GetState().Has(ButtonState.Released)); buttonAdapter.Touch(); Assert.IsTrue(triggerRaised); }