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); }
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); }
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); }
public void Run(Command command) { if (command == null) { throw new ArgumentNullException(nameof(Command)); } if (command is Command_Left) { _simulator.TurnLeft(); } else if (command is Command_Right) { _simulator.TurnRight(); } else if (command is Command_Move) { _simulator.Move(); } else if (command is Command_Place) { Command_Place cp = (Command_Place)command; _simulator.Place(cp.Position, cp.Facing); } else if (command is Command_Report) { string message = _simulator.Report(); if (message != null) { System.Console.WriteLine(message); } } else { return; } }
public void RotateLeft() { Assert.IsTrue(oRobotSimulator.Place("0,0,NORTH")); Assert.IsTrue(oRobotSimulator.Left()); Assert.AreEqual(oRobotSimulator.Report(), "0,0,WEST"); }
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); }