Пример #1
0
        public void MoveTest_ArgumentOutOfRangeException()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot = new Robot();
            TableTop table = new TableTop(5, 6);

            movingService.Move(robot, table);
        }
Пример #2
0
        public void MoveTest_ArgumentNullException_2()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot = new Robot();
            TableTop table = null;

            movingService.Move(robot, table);
        }
Пример #3
0
        public void PlaceTest_ArgumentNullException_3()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot    = new Robot();
            TableTop table    = new TableTop(5, 6);
            Position position = null;
            Facing   facing   = Facing.EAST;

            movingService.Place(robot, table, position, facing);
        }
Пример #4
0
        public void RobotSimulatorTest_ArgumentNullException_5()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new TableTop(5, 6);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = null;

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);
        }
Пример #5
0
        public void PlaceTest_Invalid()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot = new Robot();
            TableTop table = new TableTop(5, 6);

            //Setup Robot to a valid Position first
            Position position = new Position(1, 1);
            Facing   facing   = Facing.EAST;
            bool     result   = movingService.Place(robot, table, position, facing);

            //Test 1
            position = new Position(-1, 1);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 2
            position = new Position(1, -1);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 3
            position = new Position(6, 1);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 4
            position = new Position(1, 6);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 5
            position = new Position(-3, -3);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 6
            position = new Position(7, 7);
            result   = movingService.Place(robot, table, position, facing);
            Assert.AreEqual(false, result);

            //Test 7: if the Position keep unchanged
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(1, robot.Position.X);
            Assert.AreEqual(1, robot.Position.Y);
        }
Пример #6
0
        public void PlaceTest()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new TableTop(5, 6);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);

            bool result = simulator.Place(new Position(7, 7), Facing.EAST);

            Assert.IsNull(robot.Position);
            Assert.IsFalse(result);

            result = simulator.Place(new Position(3, 3), Facing.EAST);
            Assert.IsTrue(result);
            Assert.AreEqual(3, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
            Assert.AreEqual(Facing.EAST, robot.Facing);
        }
Пример #7
0
        public void ReportTest()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new TableTop(5, 6);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);


            string result = simulator.Report();

            Assert.IsNull(result);
            Assert.IsNull(robot.Position);


            simulator.Place(new Position(3, 3), Facing.EAST);

            result = simulator.Report();
            Assert.AreEqual("Output: 3,3,EAST", result);
        }
Пример #8
0
        static void Main(string[] args)
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new SquareTableTop(5);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);

            RobotSimulatorCommandLineParser parser    = new RobotSimulatorCommandLineParser();
            RobotSimulatorCommandController controler = new RobotSimulatorCommandController(simulator);

            while (true)
            {
                string  input   = Console.ReadLine();
                Command command = parser.Parsing(input);
                if (command != null)
                {
                    controler.Run(command);
                }
            }
        }
Пример #9
0
        public void TurnRightTest()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new TableTop(5, 6);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);

            Facing defaultFacing = robot.Facing;

            simulator.TurnRight();
            Assert.AreEqual(defaultFacing, robot.Facing);
            Assert.IsNull(robot.Position);

            simulator.Place(new Position(3, 3), Facing.EAST);

            simulator.TurnRight();
            Assert.AreEqual(3, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
        }
Пример #10
0
        public void MoveTest_Valid()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot = new Robot();
            TableTop table = new TableTop(5, 6);

            //Test 1
            Position position = new Position(1, 1);
            Facing   facing   = Facing.EAST;

            robot.Position = position;
            robot.Facing   = facing;
            bool result = movingService.Move(robot, table);

            //Robot move east from 1,1
            //expect new Position is 2,1
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(2, robot.Position.X);
            Assert.AreEqual(1, robot.Position.Y);

            //Test 2
            position       = new Position(0, 1);
            facing         = Facing.SOUTH;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Move(robot, table);
            //Robot move SOUTH from 0,1
            //expect new Position is 0,0
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 3
            position       = new Position(1, 0);
            facing         = Facing.WEST;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Move(robot, table);
            //Robot move west from 1,0
            //expect new Position is 0,0
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.WEST, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 4
            position       = new Position(3, 5);
            facing         = Facing.EAST;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Move(robot, table);
            //Robot move east from 3,5
            //expect new Position is 4,5
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);

            //Test 5
            position       = new Position(4, 4);
            facing         = Facing.NORTH;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Move(robot, table);
            //Robot move NORTH from 4,4
            //expect new Position is 4,5
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);
        }
Пример #11
0
        public void PlaceTest_Valid()
        {
            ToyRobotMovingService movingService = new ToyRobotMovingService();
            Robot    robot = new Robot();
            TableTop table = new TableTop(5, 6);

            //Test 1
            Position position = new Position(1, 1);
            Facing   facing   = Facing.EAST;
            bool     result   = movingService.Place(robot, table, position, facing);

            //expect new Position is 1,1
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(1, robot.Position.X);
            Assert.AreEqual(1, robot.Position.Y);

            //Test 2
            position       = new Position(0, 0);
            facing         = Facing.NORTH;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Place(robot, table, position, facing);
            //expect new Position is 0,0
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 3
            position       = new Position(4, 0);
            facing         = Facing.WEST;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Place(robot, table, position, facing);
            //expect new Position is 4,0
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.WEST, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 4
            position       = new Position(4, 5);
            facing         = Facing.EAST;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Place(robot, table, position, facing);
            //expect new Position is 4,5
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);

            //Test 5
            position       = new Position(0, 5);
            facing         = Facing.SOUTH;
            robot.Position = position;
            robot.Facing   = facing;
            result         = movingService.Place(robot, table, position, facing);
            //expect new Position is 0,5
            Assert.AreEqual(true, result);
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);
        }
Пример #12
0
        public void RobotSimulatorCommandControllerTest()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new SquareTableTop(5);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);
            RobotSimulatorCommandController controler = new RobotSimulatorCommandController(simulator);

            controler.Run(new Command_Left());
            controler.Run(new Command_Right());
            controler.Run(new Command_Move());
            controler.Run(new Command_Place(new Position(5, 5), Facing.EAST));
            Assert.IsNull(robot.Position);

            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            Console.SetOut(sw);
            string startPoint = sb.ToString();

            controler.Run(new Command_Report());
            string middleAPoint = sb.ToString();

            Assert.AreEqual(startPoint, middleAPoint);

            controler.Run(new Command_Place(new Position(3, 3), Facing.EAST));
            Assert.AreEqual(3, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
            Assert.AreEqual(Facing.EAST, robot.Facing);

            controler.Run(new Command_Report());
            string middleBPoint   = sb.ToString();
            string expectedString = "Output: 3,3,EAST" + System.Environment.NewLine;

            Assert.AreEqual(expectedString, middleBPoint);

            controler.Run(new Command_Left());
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            controler.Run(new Command_Left());
            Assert.AreEqual(Facing.WEST, robot.Facing);
            controler.Run(new Command_Left());
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            controler.Run(new Command_Left());
            Assert.AreEqual(Facing.EAST, robot.Facing);

            controler.Run(new Command_Right());
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            controler.Run(new Command_Right());
            Assert.AreEqual(Facing.WEST, robot.Facing);
            controler.Run(new Command_Right());
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            controler.Run(new Command_Right());
            Assert.AreEqual(Facing.EAST, robot.Facing);

            controler.Run(new Command_Move());
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
            controler.Run(new Command_Move());
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
        }
Пример #13
0
        public void MoveTest()
        {
            Robot                  robot            = new Robot();
            TableTop               table            = new TableTop(5, 6);
            IRobotMovingService    movingService    = new ToyRobotMovingService();
            IRobotReportingService reportingService = new ToyRobotReportingService();
            IRobotTurningService   turningService   = new ToyRobotTurningService();

            RobotSimulator simulator = new RobotSimulator(robot, table, movingService, turningService, reportingService);

            simulator.Move();
            Assert.IsNull(robot.Position);

            simulator.Place(new Position(3, 3), Facing.EAST);
            simulator.Move();

            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(3, robot.Position.Y);
            Assert.AreEqual(Facing.EAST, robot.Facing);

            //Invalid moving, position of robot should not been changed.
            //Test 1
            simulator.Place(new Position(0, 0), Facing.SOUTH);
            simulator.Move();
            //Robot move SOUTH from 0,0
            //expect new Position is 0,0
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 2
            simulator.Place(new Position(0, 1), Facing.WEST);
            simulator.Move();
            //Robot move WEST from 0,1
            //expect new Position is 0,0
            Assert.AreEqual(Facing.WEST, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(1, robot.Position.Y);

            //Test 3
            simulator.Place(new Position(1, 0), Facing.SOUTH);
            simulator.Move();
            //Robot move NORTH from 1,0
            //expect new Position is 1,0
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            Assert.AreEqual(1, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);


            //Test 4
            simulator.Place(new Position(4, 2), Facing.EAST);
            simulator.Move();
            //Robot move east from 4,2
            //expect new Position is 4,2
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(2, robot.Position.Y);

            //Test 5
            simulator.Place(new Position(3, 5), Facing.NORTH);
            simulator.Move();
            //Robot move south from 3,5
            //expect new Position is 3,5
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            Assert.AreEqual(3, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);

            //Valid moving, position of robot should been changed.
            //Test 1
            simulator.Place(new Position(1, 1), Facing.EAST);
            simulator.Move();
            //Robot move east from 1,1
            //expect new Position is 2,1
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(2, robot.Position.X);
            Assert.AreEqual(1, robot.Position.Y);

            //Test 2
            simulator.Place(new Position(0, 1), Facing.SOUTH);
            simulator.Move();
            //Robot move SOUTH from 0,1
            //expect new Position is 0,0
            Assert.AreEqual(Facing.SOUTH, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 3

            simulator.Place(new Position(1, 0), Facing.WEST);
            simulator.Move();
            //Robot move west from 1,0
            //expect new Position is 0,0
            Assert.AreEqual(Facing.WEST, robot.Facing);
            Assert.AreEqual(0, robot.Position.X);
            Assert.AreEqual(0, robot.Position.Y);

            //Test 4
            simulator.Place(new Position(3, 5), Facing.EAST);
            simulator.Move();
            //Robot move east from 3,5
            //expect new Position is 4,5
            Assert.AreEqual(Facing.EAST, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);

            //Test 5
            simulator.Place(new Position(4, 4), Facing.NORTH);
            simulator.Move();
            //Robot move NORTH from 4,4
            //expect new Position is 4,5
            Assert.AreEqual(Facing.NORTH, robot.Facing);
            Assert.AreEqual(4, robot.Position.X);
            Assert.AreEqual(5, robot.Position.Y);
        }