예제 #1
0
        private static void RideTheHood(ILogger logger, IWrapGPIO gpioWrapper)
        {
            var lFNumber = 1;
            var lBNumber = 1;
            var rFNumber = 1;
            var rBNumber = 1;

            IPin lF = new DOPin(lFNumber);
            IPin lB = new DOPin(lBNumber);
            IPin rF = new DOPin(rFNumber);
            IPin rB = new DOPin(rBNumber);


            var rider = new Rider(gpioWrapper, lF, rF, lB, rB, logger);

            rider.MoveAhead();
            Thread.Sleep(2000);
            rider.MoveBack();
            Thread.Sleep(2000);
            rider.TurnLeft();
            Thread.Sleep(2000);
            rider.TurnRight();
            Thread.Sleep(2000);
            rider.TurnLeftInPlace();
            Thread.Sleep(2000);
            rider.TurnRightInPlace();
            Thread.Sleep(2000);

            rider.Stop();
        }
        public void When_GetDistanceIsCalled_Then_DistanceIsReturned(IWrapGPIO gpioStub,
                                                                     SonicSensorDriver sut)
        {
            //a
            var    echoPin        = sut.EchoPin;
            double readedDistance = 0;
            double milisToSleep   = 3;

            var measuringThread = new Thread(() =>
            {
                //Thread.Sleep(1000);
                //gpioStub.DigitalRead(echoPin).Returns(GPIO.GPIOpinvalue.Low);
                //Thread.Sleep(1000);
                gpioStub.DigitalRead(echoPin).Returns(GPIO.GPIOpinvalue.High);
                Thread.Sleep((int)milisToSleep);
                gpioStub.DigitalRead(echoPin).Returns(GPIO.GPIOpinvalue.Low);
            });

            //aa
            measuringThread.Start();
            readedDistance = sut.GetDistance();

            //aaa
            //var measuredTime = sut.elapsedTime.TotalMilliseconds;

            Assert.Equal(milisToSleep, measuredTime);
        }
        public void When_Ctor_IsCalledWithProperParameters_Then_NoExceptionIsThrown(IWrapGPIO gpioWrapperStub,
                                                                                    IWrapTiming timingWrapperStub)
        {
            //a

            //aa, aaa
            new SonicSensorDriver(gpioWrapperStub, timingWrapperStub);
        }
예제 #4
0
        public Rider(IWrapGPIO gpio, IPin leftPin, IPin rightPin, IPin leftBackward, IPin rightBackward, ILogger logger)
        {
            _gpio         = gpio;
            _leftPin      = leftPin;
            _leftBackward = leftBackward;

            _rightPin      = rightPin;
            _rightBackward = rightBackward;

            log = logger;
        }
예제 #5
0
        public Rider(GPIOWrapper gpio, IPin leftPin, IPin rightPin, ILogger logger)
        {
            _gpio         = gpio;
            _leftPin      = leftPin;
            _leftBackward = null;

            _rightPin      = rightPin;
            _rightBackward = null;

            log = logger;
        }
예제 #6
0
        public Rider(GPIOWrapper gpio, IPin leftForward, IPin rightForward, IPin leftBackward, IPin rightBackward, ILogger logger)
        {
            _gpio         = gpio;
            _leftForward  = leftForward;
            _leftBackward = leftBackward;

            _rightForward  = rightForward;
            _rightBackward = rightBackward;

            log = logger;
        }
        public void When_Configure_Then_TriggerPin_IsSetToLow(IWrapGPIO gpioSpy,
                                                              SonicSensorDriver sut)
        {
            //a
            var triggerPin = sut.TriggerPin;

            //aa
            sut.Configure();

            //aaa
            gpioSpy.Received(1).DigitalWrite(triggerPin, GPIO.GPIOpinvalue.Low);
        }
        public void When_Configure_Then_PinModesAreReSetted(IWrapGPIO gpioSpy,
                                                            SonicSensorDriver sut)
        {
            //a

            //aa
            sut.Configure();

            //aaa
            gpioSpy.Received(1).PinMode(sut.EchoPin);
            gpioSpy.Received(1).PinMode(sut.TriggerPin);
        }
예제 #9
0
        private static void DoSonicMeasuring(IWrapGPIO gpioWrapper, IWrapTiming timingWrapper, int delay)
        {
            var sonicSensorDriver = new SonicSensorDriver(gpioWrapper, timingWrapper);

            sonicSensorDriver.Configure();

            do
            {
                sonicSensorDriver.GetDistance();
                Thread.Sleep(delay);
            }while (true);
        }
        public void When_GetDistanceIsCalled_Then_DelaysAreCalled(IWrapGPIO gpioStub,
                                                                  IWrapTiming timingSpy,
                                                                  SonicSensorDriver sut)
        {
            //a
            var echoPin         = sut.EchoPin;
            var measuringThread = new Thread(() => sut.GetDistance());

            //aa
            measuringThread.Start();

            gpioStub.DigitalRead(echoPin).Returns(GPIO.GPIOpinvalue.High);
            Thread.Sleep(1);
            gpioStub.DigitalRead(echoPin).Returns(GPIO.GPIOpinvalue.Low);


            //aaa
            timingSpy.Received(1).DelayMicroseconds(5);
            timingSpy.Received(1).DelayMicroseconds(10);
        }
 public HighPrecisionTimer2(IWrapGPIO gpioWrapper)
 {
     _gpioWrapper = gpioWrapper ?? throw new ArgumentNullException(nameof(gpioWrapper));
 }
        public void When_Ctor_IsCalledWithWrongPinType_Then_ValidationExceptionIsThrown(IWrapGPIO gpioWrapperDummy,
                                                                                        IWrapTiming timingWrapperDummy,
                                                                                        IPin triggerPinDummy,
                                                                                        DOPin echoPinStub)
        {
            //a
            Action action = () => new SonicSensorDriver(echoPinStub, triggerPinDummy, gpioWrapperDummy, timingWrapperDummy);

            //aa

            //aaa
            Assert.Throws <PinStateValidationException>(action);
        }