Example #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("__Test Input:__");
            Console.WriteLine();

            var plateau = new Plataeu();

            plateau.Define("5 5");
            Console.WriteLine(plateau.ToString());

            var roverFirst = new Rover(plateau, "1 2 N");

            Console.WriteLine(roverFirst.StartPosition.ToString());
            roverFirst.SetControlCommands("LMLMLMLMM");
            Console.WriteLine(roverFirst.ControlsString);
            roverFirst.Deploy();

            var roverSecond = new Rover(plateau, "3 3 E");

            Console.WriteLine(roverSecond.StartPosition.ToString());
            roverSecond.SetControlCommands("MMRMMRMRRM");
            Console.WriteLine(roverSecond.ControlsString);
            roverSecond.Deploy();

            Console.WriteLine();
            Console.WriteLine("__Expected Output:__");
            Console.WriteLine();
            Console.WriteLine(roverFirst.ToString());
            Console.WriteLine(roverSecond.ToString());
            Console.WriteLine();

            Console.ReadLine();
        }
Example #2
0
        public void WhenCoordinatesAreGiven_ThenShouldThrowException(string command)
        {
            // Arrange
            var plataeu = new Plataeu();

            // Act, Assert
            Assert.Throws <CommandFormatException>(() => plataeu.Define(command));
        }
Example #3
0
        public void WhenCoordinatesAreGiven_ThenShouldDefinePlateau(string command, int width, int height)
        {
            // Arrange
            var plataeu = new Plataeu();

            // Act
            plataeu.Define(command);

            // Assert
            Assert.Equal(width, plataeu.Size.Width);
            Assert.Equal(height, plataeu.Size.Height);
        }
        public void RoverDeploy(string command, int plataueWidth, int plataueHeight)
        {
            var plataue = new Plataeu();

            plataue.DefineSize(plataueWidth, plataueHeight);

            IRoverManager manager             = new RoverManager(plataue);
            var           commandSplit        = command.Split(' ');
            var           expectedXCoordinate = int.Parse(commandSplit[0]);
            var           expectedYCoordinate = int.Parse(commandSplit[1]);
            var           expectedDirection   = (Direction)Enum.Parse(typeof(Direction), commandSplit[2]);

            manager.DeployRover(expectedXCoordinate, expectedYCoordinate, expectedDirection);
        }
Example #5
0
        public Rover(Plataeu plataeu, string roverStartCommand)
        {
            this.plataeu                = plataeu;
            this.commandSplitter        = new RoverPositionCommandSplitter();
            this.controlCommandSplitter = new RoverControlCommandSplitter();
            this.StartPosition          = commandSplitter.Split(roverStartCommand);

            if (this.IsRoverInPlateau(this.StartPosition.X, this.StartPosition.Y) == false)
            {
                throw new RoverOutsidePlateauException("Rover outside of bounds");
            }

            this.direction       = AvailableDirections.List().Single(x => x.Direction == StartPosition.Direction);
            this.CurrentPosition = StartPosition;
        }
Example #6
0
        public void TwoNumbersGeneratePlataueWithCorrectSize(string command)
        {
            // Arrange
            var landingSurface = new Plataeu();

            var commandSplit   = command.Split(' ');
            var expectedWidth  = int.Parse(commandSplit[0]) + 1;
            var expectedHeight = int.Parse(commandSplit[1]) + 1;

            // Act
            landingSurface.Define(expectedWidth, expectedHeight);

            // Assert
            landingSurface.Size.Width.Should().Be(expectedWidth);
            landingSurface.Size.Height.Should().Be(expectedHeight);
        }
        public void RoverMove(string command)
        {
            var plataue = new Plataeu();

            plataue.DefineSize(5, 5);
            IRoverManager roverManager = new RoverManager(plataue);

            roverManager.DeployRover(0, 0, Direction.N);

            foreach (var moveCommand in command.ToCharArray())
            {
                var movement = (Movement)Enum.Parse(typeof(Movement), moveCommand.ToString());
                roverManager.ActiveRover.Move(movement);
            }

            Assert.Equal(0, roverManager.ActiveRover.XCoordinate);
            Assert.Equal(Direction.N, roverManager.ActiveRover.Direction);
            Assert.Equal(2, roverManager.ActiveRover.YCoordinate);
        }
Example #8
0
        public void RoverIsDeployedInUnacceptableLocation(string command)
        {
            // Arrange
            var plataue = new Plataeu();

            plataue.Define(1, 1);

            var manager           = new RoverSquadManager(plataue);
            var commandSplit      = command.Split(' ');
            var expectedX         = int.Parse(commandSplit[0]);
            var expectedY         = int.Parse(commandSplit[1]);
            var expectedDirection = Enum.Parse <Direction>(commandSplit[2]);

            // Act
            var action = new Action(() => manager.DeployRover(expectedX, expectedY, expectedDirection));

            // Assert
            action.Should().Throw <Exception>().WithMessage("Rover outside of bounds");
        }
Example #9
0
        public void RoverIsDeployedInAcceptableLocation(string command)
        {
            // Arrange
            var plataue = new Plataeu();

            plataue.Define(10, 10);

            var manager           = new RoverSquadManager(plataue);
            var commandSplit      = command.Split(' ');
            var expectedX         = int.Parse(commandSplit[0]);
            var expectedY         = int.Parse(commandSplit[1]);
            var expectedDirection = Enum.Parse <Direction>(commandSplit[2]);

            // Act
            manager.DeployRover(expectedX, expectedY, expectedDirection);

            // Assert
            manager.Rovers.Single().X.Should().Be(expectedX);
            manager.Rovers.Single().Y.Should().Be(expectedY);
            manager.Rovers.Single().Direction.Should().Be(expectedDirection);
        }
Example #10
0
        public void Move2NorthOn4X4MoveTwoBlocksUp(string command)
        {
            // Arrange
            var plataue = new Plataeu();

            plataue.Define(5, 5);
            var manager = new RoverSquadManager(plataue);

            manager.DeployRover(0, 0, Direction.N);
            var movements = command
                            .ToCharArray()
                            .Select(x => Enum.Parse <Movement>(x.ToString()))
                            .ToList();

            // Act
            movements.ForEach(manager.ActiveRover.Move);

            // Assert
            manager.ActiveRover.Should().NotBeNull();
            manager.ActiveRover.X.Should().Be(0);
            manager.ActiveRover.Y.Should().Be(2);
            manager.ActiveRover.Direction.Should().Be(Direction.N);
        }
 public ControlCommandTests()
 {
     plateau = new Plataeu();
     plateau.Define("5 5");
 }
Example #12
0
 public RoverTests()
 {
     plateau = new Plataeu();
     plateau.Define("5 5");
 }