Exemplo n.º 1
0
        public RoverCoordinates MoveBackward(RoverCoordinates roverCoordinates, Direction direction)
        {
            var x = roverCoordinates.X;
            var y = roverCoordinates.Y;

            switch (direction)
            {
            case Direction.N:
                y = roverCoordinates.Y > 0 ? roverCoordinates.Y - 1 : _maxYCoordinate;
                break;

            case Direction.S:
                y = roverCoordinates.Y < _maxYCoordinate ? roverCoordinates.Y + 1 : 0;
                break;

            case Direction.E:
                x = roverCoordinates.X > 0 ? roverCoordinates.X - 1 : _maxXCoordinate;
                break;

            case Direction.W:
                x = roverCoordinates.X < _maxXCoordinate ? roverCoordinates.X + 1 : 0;
                break;
            }

            return(new RoverCoordinates(x, y));
        }
Exemplo n.º 2
0
        public void RoverCanProcessSingleCommandWithoutStoring()
        {
            Rover r = new Rover(); // starting at (0,0), facing North

            char             command = 'F';
            RoverCoordinates dest    = new RoverCoordinates(0, 1);

            r.ProcessSingleCommand(command); // should move to (0,1), facing North

            Assert.True(r.Coordinates.Equals(dest));
        }
Exemplo n.º 3
0
        public void RoverCanNavigateInASquare()
        {
            Rover r = new Rover(); // default coords and direction

            char[] commands = { 'F', 'L', 'F', 'L', 'F', 'F', 'L', 'F', 'F', 'L', 'F', 'L', 'F' };

            r.StoreCommands(commands);
            r.ProcessAllCommands();

            // Should end back at the starting point
            RoverCoordinates dest = new RoverCoordinates(0, 0);

            Assert.True(dest.Equals(r.Coordinates));
        }
Exemplo n.º 4
0
        public void RoverCanMoveForwardFourSpaces()
        {
            Rover r = new Rover(); // default coords and direction

            char[] commands = { 'F', 'F', 'F', 'F' };

            r.StoreCommands(commands);
            r.ProcessAllCommands();

            // Should move forward 4 spots
            RoverCoordinates dest = new RoverCoordinates(0, 4);

            Assert.True(dest.Equals(r.Coordinates));
        }
Exemplo n.º 5
0
        public void Run_WrongArgumentForGetStepCount_WrongStepCount()
        {
            var drmock  = Substitute.For <IDirection>();
            var service = new Rover("rover1", new ConsoleInputService(), new ConsoleOutputService(), drmock);

            service.Movement = "M";
            RoverCoordinates c = new RoverCoordinates()
            {
                XPoint = 0, YPoint = 0, Heading = 'V'
            };

            service.roverCoordinate = c;
            service.Run(new MapCoordinates()
            {
                X = 1, Y = 1
            });
            drmock.DidNotReceive().GetStepCount(Arg.Is <char>(x => x == 'V'));
        }