public async Task Stop_AlreadyStopped_DoesNothing() { // Arrange var fixture = new PwmPinFixture(); var mockPin = fixture .WithCurrentDutyCycle(0) .CreateFakePin(); // Act await mockPin.Stop(); // Assert fixture.DutycycleChanges.Should() .BeEmpty("'changing' to current value could cause an infinite loop."); }
public async Task ChangeDutyCycleInSteps_AtTargetDutycycleAlready_DoesNothing(int dutyCycle) { // Arrange var fixture = new PwmPinFixture(); var mockPin = fixture .WithCurrentDutyCycle(dutyCycle) .CreateFakePin(); // Act await mockPin.ChangeDutyCycleInStepsAsync(dutyCycle); // Assert fixture.DutycycleChanges.Should() .BeEmpty("'changing' to current value could cause an infinite loop."); }
public async Task ChangeDutyCycleInSteps_ChangeSmallerThan1PerStep_AcceleratesInFewerSteps() { // Arrange var fixture = new PwmPinFixture(); var mockPin = fixture.CreateFakePin(); var expected = new List <int> { 1, 2, 3, 4 }; // Act await mockPin.ChangeDutyCycleInStepsAsync(targetDutyCycle : 4, stepsPerChange : 5); // Assert fixture.DutycycleChanges.Should() .BeEquivalentTo(expected, options => options.WithStrictOrdering()); }
public async Task ChangeDutyCycleInSteps_AtSpeed_DeAcceleratesInSteps() { // Arrange var fixture = new PwmPinFixture(); var mockPin = fixture .WithCurrentDutyCycle(90) .CreateFakePin(); var expected = new List <int> { 80, 70, 60, 50, 40 }; // Act await mockPin.ChangeDutyCycleInStepsAsync(targetDutyCycle : 40, stepsPerChange : 5); // Assert fixture.DutycycleChanges.Should() .BeEquivalentTo(expected, options => options.WithStrictOrdering()); }
public async Task Stop_AtSpeed_DeAcceleratesInAFewSteps(int startSpeed, int expectedStep1, int expectedStep2, int expectedStep3) { // Arrange var fixture = new PwmPinFixture(); var mockPin = fixture .WithCurrentDutyCycle(startSpeed) .CreateFakePin(); var expected = new List <int> { expectedStep1, expectedStep2, expectedStep3 }; // Act await mockPin.Stop(); // Assert fixture.DutycycleChanges.Should() .BeEquivalentTo(expected, options => options.WithStrictOrdering()); }