Пример #1
0
        public void RoverExecutesCommandSequenceThatLeadsIntoObstacle()
        {
            var grid = new GridBuilder()
                       .WithDimensions(2, 2)
                       .WithObstacleAt(1, 1)
                       .Build();
            var startingPosition = new PositionBuilder()
                                   .OnGrid(grid)
                                   .WithCoordinates(new Coordinates(0, 0))
                                   .Facing(DirectionEnum.North)
                                   .Build();
            var rover = new RoverBuilder()
                        .AtPosition(startingPosition)
                        .Build();
            var roverControl = new RoverControlBuilder()
                               .ForRover(rover)
                               .Build();

            roverControl.SendCommands("frf");
            roverControl.InvokeCommands();

            var endingPosition = new PositionBuilder()
                                 .OnGrid(grid)
                                 .WithCoordinates(new Coordinates(0, 1))
                                 .Facing(DirectionEnum.East)
                                 .Build();

            Assert.Equal(endingPosition, rover.Position);
        }
Пример #2
0
        public void RoverRunsIntoObstacleAndReports()
        {
            var grid = new GridBuilder()
                       .WithDimensions(2, 2)
                       .WithObstacleAt(1, 0)
                       .Build();
            var startingPosition = new PositionBuilder()
                                   .OnGrid(grid)
                                   .WithCoordinates(new Coordinates(0, 0))
                                   .Facing(DirectionEnum.West)
                                   .Build();
            var rover = new RoverBuilder()
                        .AtPosition(startingPosition)
                        .Build();
            var roverControl = new RoverControlBuilder()
                               .ForRover(rover)
                               .Build();

            roverControl.SendCommands("f");
            var detectedObstacle = roverControl.InvokeCommands();

            Assert.Equal(startingPosition, rover.Position);
            Assert.True(detectedObstacle);
            Assert.Empty(roverControl.Commands);
        }
        public void RoverMovesBackwards(Position startingPosition, Position positionAfterMovement)
        {
            var rover = new RoverBuilder()
                        .AtPosition(startingPosition)
                        .Build();
            var roverControl = new RoverControlBuilder()
                               .ForRover(rover)
                               .Build();

            roverControl.SendCommands("B");
            roverControl.InvokeCommands();

            Assert.Equal(positionAfterMovement, rover.Position);
        }
        public void RoverWrapsGridMovingForward(Position startingPosition, Position positionAfterWrap)
        {
            var rover = new RoverBuilder()
                        .AtPosition(startingPosition)
                        .Build();
            var roverControl = new RoverControlBuilder()
                               .ForRover(rover)
                               .Build();

            roverControl.SendCommands("f");
            roverControl.InvokeCommands();

            Assert.Equal(positionAfterWrap, rover.Position);
        }
        public void RoverReceievesCommands()
        {
            var rover = new RoverBuilder()
                        .AtDefaultPosition()
                        .Build();
            var roverControl = new RoverControlBuilder()
                               .ForRover(rover)
                               .Build();

            roverControl.SendCommands("fblr");

            Assert.Equal(4, roverControl.Commands.Count);
            Assert.Contains(roverControl.Commands, command => command is RoverCommandForward);
            Assert.Contains(roverControl.Commands, command => command is RoverCommandBackwards);
            Assert.Contains(roverControl.Commands, command => command is RoverCommandTurnLeft);
            Assert.Contains(roverControl.Commands, command => command is RoverCommandTurnRight);
        }