public void Should_TurnOn_IfButtonPressed_EvenIfTimeRangeConditionIs_NotFulfilled() { var timer = new TestHomeAutomationTimer(); timer.CurrentTime = TimeSpan.Parse("18:00:00"); var automation = new AutomaticTurnOnAndOffAutomation(timer); 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); automation.WithTarget(output); button.PressShort(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.On); }
public void Should_NotTurnOn_IfMotionDetected_AndTimeRangeConditionIs_NotFulfilled() { var timer = new TestHomeAutomationTimer(); timer.CurrentTime = TimeSpan.Parse("18:00:00"); var automation = new AutomaticTurnOnAndOffAutomation(timer); var motionDetector = new TestMotionDetector(); var output = new TestBinaryStateOutputActuator(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); automation.WithTurnOnWithinTimeRange(() => TimeSpan.Parse("10:00:00"), () => TimeSpan.Parse("15:00:00")); automation.WithTrigger(motionDetector); automation.WithTarget(output); motionDetector.WalkIntoMotionDetector(); output.State.ShouldBeEquivalentTo(BinaryActuatorState.Off); }