Example #1
0
        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.");
        }
Example #2
0
        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.");
        }
Example #3
0
        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());
        }
Example #4
0
        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());
        }
Example #5
0
        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());
        }