public void Fade_with_high_value_should_fadeIn() { var times = 0; const int toIntensity = 255; A.CallTo(() => _arduino.AnalogWrite(Pin, A <int> ._)) .Invokes(() => { times++; }); _led.Fade(toIntensity); for (var i = 0; i < toIntensity - 1; i++) { _timer.Tick(); } _led.Intensity.ShouldEqual(toIntensity); times.ShouldEqual(255); }
public void DigitalRead_1_should_trigger_Down() { var wasCalled = false; _button.Down = () => { wasCalled = true; }; A.CallTo(() => _arduino.DigitalRead(Pin)).Returns(0); wasCalled.ShouldBeFalse(); _button.IsDown.ShouldBeFalse(); _timer.Tick(); A.CallTo(() => _arduino.DigitalRead(Pin)).Returns(1); _timer.Tick(); wasCalled.ShouldBeTrue(); _button.IsDown.ShouldBeTrue(); }
public void StrobeOn_should_start_timer() { A.CallTo(() => _arduino.DigitalWrite(Pin, DigitalPin.High)).DoesNothing(); A.CallTo(() => _arduino.DigitalWrite(Pin, DigitalPin.Low)).DoesNothing(); _led.On(); _led.StrobeOn(); _led.State.ShouldEqual(LedState.Off); _timer.Tick(); _led.State.ShouldEqual(LedState.On); A.CallTo(() => _arduino.DigitalWrite(Pin, DigitalPin.High)).MustHaveHappened(Repeated.Exactly.Twice); A.CallTo(() => _arduino.DigitalWrite(Pin, DigitalPin.Low)).MustHaveHappened(Repeated.Exactly.Twice); }
public async Task It_uses_correct_cut_off_time() { var timer = new FakeTimer(); var cutOffTime = DateTime.MinValue; var cleaner = new TestableCleaner((time, token) => { cutOffTime = time; return(Task.FromResult(0)); }, (m, e) => { }, TimeSpan.FromDays(7), TimeSpan.Zero, timer); await cleaner.Start().ConfigureAwait(false); var now = new DateTime(2017, 3, 31, 0, 0, 0); await timer.Tick(now, CancellationToken.None).ConfigureAwait(false); var expected = new DateTime(2017, 3, 24, 0, 0, 0); Assert.AreEqual(expected, cutOffTime); }
public async Task It_resets_the_failure_counter_after_successful_attempt() { var criticalActionTriggered = false; var timer = new FakeTimer(); var cleaner = new TestableCleaner((time, token) => Task.FromResult(0), (m, e) => criticalActionTriggered = true, TimeSpan.FromDays(7), TimeSpan.Zero, timer); await cleaner.Start().ConfigureAwait(false); for (var i = 0; i < 100; i++) { if (i % 9 == 0) //Succeed every 9th attempt { await timer.Tick(DateTime.UtcNow, CancellationToken.None).ConfigureAwait(false); } else { timer.OnError(new Exception("Simulated!")); } } Assert.IsFalse(criticalActionTriggered); }
public async Task It_resets_the_failure_counter_after_successful_attempt() { var criticalActionTriggered = false; var timer = new FakeTimer(); var cleaner = new DedupeCleaner(_ => Task.FromResult(0), _ => criticalActionTriggered = true, TimeSpan.Zero, timer); cleaner.Start(); for (var i = 0; i < 100; i++) { if (i % 9 == 0) //Succeed every 9th attempt { await timer.Tick(DateTime.UtcNow, CancellationToken.None); } else { timer.OnError(new("Simulated!")); } } Assert.False(criticalActionTriggered); }