Пример #1
0
        public async Task move_should_stop_at_the_edge_of_the_garden(char orientation, int expectedY, int expectedX)
        {
            IPosition setting = new DevicePosition(5, 5, orientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            var position = _device.CurrentPosition();

            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            IPosition newPosition = await _device.Move();

            Assert.AreEqual(expectedY, newPosition.YAxis);
            Assert.AreEqual(expectedX, newPosition.XAxis);
            Assert.AreEqual(orientation, newPosition.Orientation);
        }
Пример #2
0
        public void present_initial_position_from_configuration_settings()
        {
            // arrange
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            // act
            var position = _device.CurrentPosition();

            // assert
            Assert.AreEqual(DEVICE_POSITION_X, position.XAxis);
            Assert.AreEqual(DEVICE_POSITION_Y, position.YAxis);
            Assert.AreEqual(DEVICE_ORIENTATION, position.Orientation);
        }
Пример #3
0
        public void Setup()
        {
            _initialSettingsMock = SetInitialSettingsMock(
                GARDENSIZE_LENGHT,
                GARDENSIZE_WIDTH,
                DEVICE_POSITION_Y,
                DEVICE_POSITION_X,
                DEVICE_ORIENTATION);

            _buffer   = new DeviceBuffer();
            _actuator = new TestsActuator(false);
            _device   = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);
        }
Пример #4
0
        public async Task be_able_turn_90_degrees_clockwise(char currentOrientation, char expectedOrientation)
        {
            // arrange

            IPosition setting = new DevicePosition(5, 5, currentOrientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            // act
            var position = await _device.TurnClockwise();

            // assert
            Assert.AreEqual(expectedOrientation, position.Orientation);
        }
Пример #5
0
        public async Task turns_anti_clockwise_in_around_2_seconds()
        {
            var actuator = new TestsActuator(true);

            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, actuator);

            // act
            var watch    = System.Diagnostics.Stopwatch.StartNew();
            var position = await _device.TurnCounterClockwise();

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            // assert
            Assert.GreaterOrEqual(elapsedMs, 2000);
            Assert.LessOrEqual(elapsedMs, 3000);
        }
Пример #6
0
        public async Task move_one_step_forward(char orientation, int expectedY, int expectedX)
        {
            // garden: 0 x 0 -> 10 x 10
            // starts at: 'N', y:5, x:5
            // expects: 'N', y + 1 = 6, x

            IPosition setting = new DevicePosition(5, 5, orientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            var position = _device.CurrentPosition();

            IPosition newPosition = await _device.Move();

            Assert.AreEqual(expectedY, newPosition.YAxis);
            Assert.AreEqual(expectedX, newPosition.XAxis);
            Assert.AreEqual(orientation, newPosition.Orientation);
        }
Пример #7
0
        public async Task be_able_turn_anti_clockwise_in_sequence(char start, int numberTurns, char expected)
        {
            // arrange
            IPosition setting = new DevicePosition(5, 5, start) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            IPosition position = _device.CurrentPosition();

            // act
            for (int i = 0; i < numberTurns; i++)
            {
                position = await _device.TurnCounterClockwise();
            }

            // assert
            Assert.AreEqual(expected, position.Orientation);
        }
Пример #8
0
        public async Task receive_move_instructions_and_buffer_them_for_execution()
        {
            var actuator = new TestsActuator(true);

            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, actuator);

            // act

            var watch = System.Diagnostics.Stopwatch.StartNew();

            _device.Move();
            _device.Move();
            _device.Move();
            var position = await _device.Move();

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            // assert
            Assert.GreaterOrEqual(elapsedMs, 5000 * 4);
            Assert.LessOrEqual(elapsedMs, 6000 * 4);
        }
Пример #9
0
        public void Setup()
        {
            var positionMock = new Mock <IPosition>();

            positionMock.Setup(x => x.Orientation).Returns('N');
            positionMock.Setup(x => x.XAxis).Returns(5);
            positionMock.Setup(x => x.YAxis).Returns(5);

            var gardenSizeMock = new Mock <ISize>();

            gardenSizeMock.Setup(x => x.Lenght).Returns(10);
            gardenSizeMock.Setup(x => x.Width).Returns(10);

            var settingsMock = new Mock <ISettings>();

            settingsMock.Setup(x => x.DevicePosition).Returns(positionMock.Object);
            settingsMock.Setup(x => x.GardenSize).Returns(gardenSizeMock.Object);

            var buffer   = new DeviceBuffer();
            var actuator = new TestsActuator(true);
            var device   = new SLMMDevice(settingsMock.Object, buffer, actuator);

            _sut = new LawnMowerController(device);
        }