public void MoveAroundWrappingGridWithObstacles()
        {
            var expectedStartWorld = "....N" + Environment.NewLine +
                                     "....." + Environment.NewLine +
                                     "..TBB" + Environment.NewLine +
                                     "..T.." + Environment.NewLine +
                                     "..TBB";
            var expectedEndWorld = "....." + Environment.NewLine +
                                   "....." + Environment.NewLine +
                                   "..TBB" + Environment.NewLine +
                                   "..TE." + Environment.NewLine +
                                   "..TBB";

            const int width  = 5;
            const int height = 5;
            var       grid   = new Grid(width, height);

            grid.AddObstacle(2, 0, ObstacleType.Tree);
            grid.AddObstacle(2, 1, ObstacleType.Tree);
            grid.AddObstacle(2, 2, ObstacleType.Tree);
            grid.AddObstacle(3, 0, ObstacleType.Boulder);
            grid.AddObstacle(4, 0, ObstacleType.Boulder);
            grid.AddObstacle(3, 2, ObstacleType.Boulder);
            grid.AddObstacle(4, 2, ObstacleType.Boulder);

            var rover = new Rover();
            var roverStartingLocation = grid.GetLocation(4, 4);

            rover.DropOnGrid(grid, roverStartingLocation, Direction.North);

            var worldFormatter = new WorldFormatter(rover, grid);

            var actualStartWorld = worldFormatter.FormatWorld();

            Assert.Equal(expectedStartWorld, actualStartWorld);

            var commands = new[] {
                RoverCommand.TurnRight,
                RoverCommand.MoveForward,
                RoverCommand.TurnRight,
                RoverCommand.MoveForward,
                RoverCommand.MoveForward,
                RoverCommand.MoveForward,
                RoverCommand.TurnLeft,
                RoverCommand.MoveBackward,
                RoverCommand.MoveBackward
            };

            rover.ProcessCommands(commands);

            var actualEndWorld = worldFormatter.FormatWorld();

            Assert.Equal(expectedEndWorld, actualEndWorld);
        }
예제 #2
0
        public void FormatRoverStatusSummary()
        {
            const string expectedSummary = "The rover is currently at (1, 3) facing North.";

            var locationMock = Mock.Of <ILocation>(c =>
                                                   c.X == 1 &&
                                                   c.Y == 3);
            var roverMock = Mock.Of <IRover>(r =>
                                             r.Location == locationMock &&
                                             r.Direction == Direction.North);
            var worldFormatter = new WorldFormatter(roverMock, Mock.Of <IGrid>());
            var actualSummary  = worldFormatter.FormatRoverStatusSummary();

            Assert.Equal(expectedSummary, actualSummary);
        }
예제 #3
0
        public void BuildRoverIntoFormat()
        {
            var expectedWorld = "..." + Environment.NewLine +
                                "..." + Environment.NewLine +
                                "N..";

            var grid     = new Grid(3, 3);
            var rover    = new Rover();
            var location = grid.GetLocation(0, 0);

            rover.DropOnGrid(grid, location, Direction.North);
            var worldFormatter = new WorldFormatter(rover, grid);
            var actualWorld    = worldFormatter.FormatWorld();

            Assert.Equal(expectedWorld, actualWorld);
        }
예제 #4
0
        public void BuildObstaclesIntoFormat()
        {
            var expectedWorld = "T.B" + Environment.NewLine +
                                "..." + Environment.NewLine +
                                "N..";

            var grid = new Grid(3, 3);

            var rover         = new Rover();
            var roverLocation = grid.GetLocation(0, 0);

            rover.DropOnGrid(grid, roverLocation, Direction.North);

            grid.AddObstacle(0, 2, ObstacleType.Tree);
            grid.AddObstacle(2, 2, ObstacleType.Boulder);

            var worldFormatter = new WorldFormatter(rover, grid);
            var actualWorld    = worldFormatter.FormatWorld();

            Assert.Equal(expectedWorld, actualWorld);
        }