public void OnPowerOffPerformsAction() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("in"); fs.When(f => f.Watch(Arg.Any <string>(), Arg.Any <Func <bool> >(), Arg.Any <Action>())).Do(c => { if (c.Arg <Func <bool> >().Invoke()) { c.Arg <Action>().Invoke(); } }); var pinInterface = new LinuxPinInterface(123, fs) { Power = PowerValue.Off }; var called = false; //act pinInterface.OnPowerOff(() => called = true); //assert Assert.True(called); }
public void EnabledUsesCachedValueOnSubsequentRequests() { //arrange var fs = Substitute.For <IFileSystem>(); var pinInterface = new LinuxPinInterface(123, fs); var enabled = pinInterface.Enabled; //act enabled = pinInterface.Enabled; //assert fs.Received(1).Exists(Arg.Any <string>()); }
public void SettingIOModeEnablesPinIfNotEnabled() { //arrange var fs = Substitute.For <IFileSystem>(); //act var pinInterface = new LinuxPinInterface(123, fs) { IOMode = IOMode.Write }; //assert fs.Received().Write("/sys/class/gpio/export", "123"); }
public void OnPowerChangeEnablesIfNotEnabled() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("in"); var pinInterface = new LinuxPinInterface(123, fs); //act pinInterface.OnPowerChange(null); //assert fs.Received().Write("/sys/class/gpio/export", "123"); }
public void DisablesOnDispose() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("out"); var pinInterface = new LinuxPinInterface(123, fs); //act pinInterface.Dispose(); //assert fs.Received().Write("/sys/class/gpio/unexport", "123"); }
public void NotEnabledIfDirectoryDoesNotExist() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Exists("/sys/class/gpio/gpio123").Returns(false); var pinInterface = new LinuxPinInterface(123, fs); //act var enabled = pinInterface.Enabled; //assert Assert.False(enabled); }
public void GettingIOModeEnablesPinIfNotEnabled() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("in"); var pinInterface = new LinuxPinInterface(123, fs); //act var io = pinInterface.IOMode; //assert fs.Received().Write("/sys/class/gpio/export", "123"); }
public void DisableSetsEnabledFalse() { //arrange var fs = Substitute.For <IFileSystem>(); var pinInterface = new LinuxPinInterface(123, fs) { Enabled = true }; //act pinInterface.Disable(); //assert Assert.False(pinInterface.Enabled); }
public void CanSetIOMode(IOMode io, string expected) { //arrange var fs = Substitute.For <IFileSystem>(); //act var pinInterface = new LinuxPinInterface(123, fs) { Enabled = true, IOMode = io }; //assert fs.Received().Write("/sys/class/gpio/gpio123/direction", expected); }
public void CanToggleForSetIterations() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("out"); fs.Read("/sys/class/gpio/gpio123/value").Returns("0"); var pinInterface = new LinuxPinInterface(123, fs); //act pinInterface.Toggle(TimeSpan.TicksPerMillisecond, 10); //assert fs.Received(20).Write("/sys/class/gpio/gpio123/value", Arg.Any <string>()); }
public void CanGetIOMode(string value, IOMode expected) { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns(value); var pinInterface = new LinuxPinInterface(123, fs); //act var io = pinInterface.IOMode; //assert Assert.Equal(expected, io); }
public void EnabledUsesCachedValueAfterWrite() { //arrange var fs = Substitute.For <IFileSystem>(); var pinInterface = new LinuxPinInterface(123, fs) { Enabled = true }; //act var enabled = pinInterface.Enabled; //assert fs.Received(0).Exists(Arg.Any <string>()); }
public void SettingPowerSetsIOModeIfNotWrite() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("in"); //act var pinInterface = new LinuxPinInterface(123, fs) { Power = PowerValue.On }; //assert fs.Received().Write("/sys/class/gpio/gpio123/direction", "out"); }
public void GettingPowerEnablesPinIfNotEnabled() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/value").Returns("1"); var pinInterface = new LinuxPinInterface(123, fs) { Direction = Direction.In }; //act var power = pinInterface.Power; //assert fs.Received().Write("/sys/class/gpio/export", "123"); }
public void ToggleTurnsOffIfOn() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("out"); var pinInterface = new LinuxPinInterface(123, fs) { Power = PowerValue.On }; //act pinInterface.Toggle(); //assert Assert.Equal(PowerValue.Off, pinInterface.Power); }
public void CanSetPower(Type powerModeType, PowerValue power, string expected) { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("out"); //act var pinInterface = new LinuxPinInterface(123, fs) { Enabled = true, PowerMode = (IPowerMode)Activator.CreateInstance(powerModeType), Power = power }; //assert fs.Received().Write("/sys/class/gpio/gpio123/value", expected); }
public void GettingPowerGetsCachedValueWhenOutput() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/value").Returns("0"); var pinInterface = new LinuxPinInterface(123, fs) { Direction = Direction.Out }; var power = pinInterface.Power; //act power = pinInterface.Power; //assert fs.Received(1).Read("/sys/class/gpio/gpio123/value"); }
public void CanGetPower(Type powerModeType, string value, PowerValue expected) { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/value").Returns(value); var pinInterface = new LinuxPinInterface(123, fs) { Direction = Direction.Out, PowerMode = (IPowerMode)Activator.CreateInstance(powerModeType) }; //act var power = pinInterface.Power; //assert Assert.Equal(expected, power); }
public void TurnOffForTurnsOnAfter() { //arrange var fs = Substitute.For <IFileSystem>(); fs.Read("/sys/class/gpio/gpio123/direction").Returns("out"); var pinInterface = new LinuxPinInterface(123, fs); //act pinInterface.TurnOffFor(TimeSpan.Zero); //assert var calls = fs.ReceivedCalls() .Where(c => c.GetMethodInfo().Name == "Write" && c.GetArguments()[0].ToString().EndsWith("value")) .ToArray(); Assert.Equal("0", calls[0].GetArguments()[1]); Assert.Equal("1", calls[1].GetArguments()[1]); }