Exemplo n.º 1
0
        static void Main()
        {
            IPlateau plateu   = new Plateau("plateau", new Point(), new Point(5, 5));
            ISender  mediator = new RoverMediator(plateu);

            IRover rover1 = new Rover(plateu, new Point(1, 2), "rover1", Direction.North);
            IRover rover2 = new Rover(plateu, new Point(3, 3), "rover2", Direction.East);

            plateu.DeployRover(rover1);
            plateu.DeployRover(rover2);

            IEnumerable <ICommand> rover1Commands = CommandParser.CreateRoverCommandsFromText("LMLMLMLMM", rover1);
            IEnumerable <ICommand> rover2Commands = CommandParser.CreateRoverCommandsFromText("MMRMMRMRRM", rover2);

            //mediator.Send(rover1, rover1Commands);
            //mediator.Send(rover2, rover2Commands);

            IEnumerable <Task> deploys = new List <Task>
            {
                Task.Run(() => mediator.Send(rover1, rover1Commands)),
                Task.Run(() => mediator.Send(rover2, rover2Commands))
            };

            Task.WhenAll(deploys);
            System.Console.WriteLine("Test Input: \n5 5 \n1 2 N \nLMLMLMLMM \n3 3 E \nMMRMMRMRRM\n");
            System.Console.WriteLine("Expected Output:\n1 3 N\n5 1 E\n");
            System.Console.WriteLine(plateu.ToString());

            System.Console.ReadLine();
        }
Exemplo n.º 2
0
        public void CreateRoverCommandsFromText_Should_Convert(string commandInput)
        {
            Mock <IRover>          rover    = new Mock <IRover>();
            IEnumerable <ICommand> commands = CommandParser.CreateRoverCommandsFromText(commandInput, rover.Object);

            commands.Should().NotBeNull();
            commands.Should().HaveCount(commandInput.Length);
            commands.Where(c => c is TurnLeftCommand).Should().ContainItemsAssignableTo <TurnLeftCommand>().And
            .HaveCount(commandInput.Count(c => c == 'L'));
            commands.Where(c => c is MoveCommand).Should().ContainItemsAssignableTo <MoveCommand>().And
            .HaveCount(commandInput.Count(c => c == 'M'));
            commands.Where(c => c is TurnRightCommand).Should().ContainItemsAssignableTo <TurnRightCommand>().And
            .HaveCount(commandInput.Count(c => c == 'R'));
        }