public void Should_TurnOff_IfButtonPressed_WhileTargetIsAlreadyOn() { var timer = new TestHomeAutomationTimer(); timer.SetTime(TimeSpan.Parse("14:00:00")); var automation = new TurnOnAndOffAutomation(AutomationIdFactory.EmptyId, timer, new TestHttpRequestController(), new TestLogger()); var button = new TestButton(); var output = new TestBinaryStateOutputActuator(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); automation.WithTrigger(button.GetPressedShortlyTrigger()); automation.WithTarget(output); IBinaryStateOutputActuator[] otherActuators = { new TestBinaryStateOutputActuator().WithOffState(), new TestBinaryStateOutputActuator().WithOffState() }; automation.WithSkipIfAnyActuatorIsAlreadyOn(otherActuators); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.On); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.On); automation.WithTurnOffIfButtonPressedWhileAlreadyOn(); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); }
public void Should_TurnOn_IfButtonPressedShort() { var automation = new TurnOnAndOffAutomation(AutomationIdFactory.EmptyId, new TestHomeAutomationTimer(), new TestHttpRequestController(), new TestLogger()); var button = new TestButton(); var output = new TestBinaryStateOutputActuator(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); automation.WithTrigger(button.GetPressedShortlyTrigger()); automation.WithTarget(output); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.On); }
public void Should_TurnOn_IfButtonPressed_EvenIfTimeRangeConditionIs_NotFulfilled() { var timer = new TestHomeAutomationTimer(); timer.SetTime(TimeSpan.Parse("18:00:00")); var automation = new TurnOnAndOffAutomation(AutomationIdFactory.EmptyId, timer, new TestHttpRequestController(), new TestLogger()); var button = new TestButton(); var output = new TestBinaryStateOutputActuator(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); automation.WithTurnOnWithinTimeRange(() => TimeSpan.Parse("10:00:00"), () => TimeSpan.Parse("15:00:00")); automation.WithTrigger(button.GetPressedShortlyTrigger()); automation.WithTarget(output); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.On); }