コード例 #1
0
    public void TurnOffSetsPowerOff()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.GetPinMode(123).Returns(PinMode.Output);
        var pwm          = Substitute.For <IPwmChannel>();
        var pinInterface = new SystemPinInterface(123, gpio, pwm)
        {
            Power = PowerValue.On
        };

        //act
        pinInterface.TurnOff();

        //assert
        gpio.Received().Write(123, PinValue.Low);
    }
コード例 #2
0
    public void SettingPowerSetsIOModeIfNotWrite()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.GetPinMode(123).Returns(PinMode.Input);
        var pwm = Substitute.For <IPwmChannel>();

        //act
        var pinInterface = new SystemPinInterface(123, gpio, pwm)
        {
            Power = PowerValue.On
        };

        //assert
        Assert.NotNull(pinInterface);
        gpio.Received().SetPinMode(123, PinMode.Output);
    }
コード例 #3
0
    public void SettingPowerModeTurnsPinOff()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.GetPinMode(123).Returns(PinMode.Input);
        var pwm          = Substitute.For <IPwmChannel>();
        var pinInterface = new SystemPinInterface(123, gpio, pwm)
        {
            PowerMode = PowerMode.Direct
        };

        //act
        pinInterface.PowerMode = PowerMode.Differential;

        //assert
        gpio.Received().Write(123, PinValue.High);
    }
コード例 #4
0
        public void TurnOffForTurnsOnAfter()
        {
            //arrange
            var gpio = Substitute.For <IGpioController>();

            gpio.GetPinMode(123).Returns(PinMode.Output);

            var pinInterface = new SystemPinInterface(123, gpio);

            //act
            pinInterface.TurnOffFor(TimeSpan.Zero);

            //assert
            var calls = gpio.ReceivedCalls().Where(c => c.GetMethodInfo().Name == "Write").ToArray();

            Assert.Equal(PinValue.Low, calls[0].GetArguments()[1]);
            Assert.Equal(PinValue.High, calls[1].GetArguments()[1]);
        }
コード例 #5
0
        public void TurnOnSetsPowerOn()
        {
            //arrange
            var gpio = Substitute.For <IGpioController>();

            gpio.GetPinMode(123).Returns(PinMode.Output);

            var pinInterface = new SystemPinInterface(123, gpio)
            {
                Power = PowerValue.Off
            };

            //act
            pinInterface.TurnOn();

            //assert
            gpio.Received().Write(123, PinValue.High);
        }
コード例 #6
0
        public void CanSetPower(Type powerModeType, PowerValue power, byte expected)
        {
            //arrange
            var gpio = Substitute.For <IGpioController>();

            gpio.GetPinMode(123).Returns(PinMode.Output);

            //act
            var pinInterface = new SystemPinInterface(123, gpio)
            {
                Enabled   = true,
                PowerMode = (IPowerMode)Activator.CreateInstance(powerModeType),
                Power     = power
            };

            //assert
            gpio.Received().Write(123, expected);
        }
コード例 #7
0
    public void TurnOnStartsPWMWhenStrengthSet()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.GetPinMode(123).Returns(PinMode.Output);
        gpio.Read(123).Returns(PinValue.High);
        var pwm          = Substitute.For <IPwmChannel>();
        var pinInterface = new SystemPinInterface(123, gpio, pwm)
        {
            Strength = 50
        };

        //act
        pinInterface.TurnOn();

        //assert
        pwm.Received().Start();
    }
コード例 #8
0
    public void GettingPowerEnablesPinIfNotEnabled()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.Read(123).Returns(PinValue.High);
        var pwm          = Substitute.For <IPwmChannel>();
        var pinInterface = new SystemPinInterface(123, gpio, pwm)
        {
            Direction = Direction.In
        };

        //act
        var power = pinInterface.Power;

        //assert
        Assert.IsType <PowerValue>(power);
        gpio.Received().OpenPin(123);
    }
コード例 #9
0
        public void CanGetPower(Type powerModeType, byte value, PowerValue expected)
        {
            //arrange
            var gpio = Substitute.For <IGpioController>();

            gpio.Read(123).Returns(value);

            var pinInterface = new SystemPinInterface(123, gpio)
            {
                Direction = Direction.Out,
                PowerMode = (IPowerMode)Activator.CreateInstance(powerModeType)
            };

            //act
            var power = pinInterface.Power;

            //assert
            Assert.Equal(expected, power);
        }
コード例 #10
0
    public void OnPowerChangePerformsAction()
    {
        //arrange
        var gpio = Substitute.For <IGpioController>();

        gpio.GetPinMode(123).Returns(PinMode.Input);
        gpio.When(g =>
                  g.RegisterCallbackForPinValueChangedEvent(123, Arg.Any <PinEventTypes>(),
                                                            Arg.Any <PinChangeEventHandler>()))
        .Do(c => c.Arg <PinChangeEventHandler>().Invoke(null !, null !));
        var pwm          = Substitute.For <IPwmChannel>();
        var pinInterface = new SystemPinInterface(123, gpio, pwm);
        var called       = false;

        //act
        pinInterface.OnPowerChange(() => called = true);

        //assert
        Assert.True(called);
    }