Exemple #1
0
 public void TestRobotInitialization()
 {
     var robot = new Robot();
     robot.Initialize(1, 10, 15);
     RobotAssert.AreEqual(robot.CurrentCoordinate, 10, 15);
     Assert.AreEqual(1, robot.NumberOfUniqueVisitedFields);
 }
Exemple #2
0
 public void TestRobotInvalidMoveBoundaries()
 {
     var robot = new Robot(true);
     robot.Initialize(5,100000,100000);
     AssertException.IsNotThrown<Exception>(() => robot.Move(CardinalDirection.East, 99999));
     AssertException.IsNotThrown<Exception>(() => robot.Move(CardinalDirection.East, 1));
     AssertException.IsThrown<Exception>(() => robot.Move(CardinalDirection.East, 0));
     AssertException.IsThrown<Exception>(() => robot.Move(CardinalDirection.East, 100000));
 }
Exemple #3
0
 public void TestRobotInvalidInitializationBoundaries()
 {
     var robot = new Robot(true);
     AssertException.IsNotThrown<Exception>(() => robot.Initialize(1, 1, 1));
     AssertException.IsNotThrown<Exception>(() => robot.Initialize(10000, -100000, 100000));
     AssertException.IsThrown<ArgumentException>(() => robot.Initialize(Boundaries.MaxLifetime + 100, 1, 1));
     AssertException.IsThrown<ArgumentException>(() => robot.Initialize(10, 1, Boundaries.MinX - 100));
     AssertException.IsThrown<ArgumentException>(() => robot.Initialize(10, Boundaries.MaxX + 10, 1));
 }
Exemple #4
0
 public void TestRobotLifetimeDecreases()
 {
     var robot = new Robot();
     robot.Initialize(2, 0, 0);
     Assert.IsFalse(robot.IsDone());
     robot.Move(CardinalDirection.East, 1);
     Assert.IsFalse(robot.IsDone());
     robot.Move(CardinalDirection.South, 2);
     Assert.IsTrue(robot.IsDone());
 }
Exemple #5
0
 public void TestRobotStepLeftAndRightWithoutCountingDoubleFields()
 {
     var robot = new Robot();
     robot.Initialize(5, 10, 20);
     Assert.AreEqual(1, robot.NumberOfUniqueVisitedFields);
     robot.StepAndAssertVisitedFields(CardinalDirection.East, 2, 3);
     //while walking back to where we were, the cleaned area does not increase
     robot.StepAndAssertVisitedFields(CardinalDirection.West, 1, 3);
     robot.StepAndAssertVisitedFields(CardinalDirection.West, 1, 3);
     //when stepping on new ground, cleaned area increases again
     robot.StepAndAssertVisitedFields(CardinalDirection.West, 1, 4);
 }
Exemple #6
0
 public void TestRobotStepWithOverlap()
 {
     var robot = new Robot();
     //start in positive area and make step in same area
     robot.Initialize(5, 10, 20);
     robot.StepAndAssertVisitedFields(CardinalDirection.East, 5, 6);
     RobotAssert.AreEqual(robot.CurrentCoordinate, 15, 20);
     //step into area where Y is negative
     robot.StepAndAssertVisitedFields(CardinalDirection.South, 100, 106);
     RobotAssert.AreEqual(robot.CurrentCoordinate, 15, -80);
     //step into area where x is negative too
     robot.StepAndAssertVisitedFields(CardinalDirection.West, 30, 136);
     RobotAssert.AreEqual(robot.CurrentCoordinate, -15, -80);
     //cross former path in two steps, back to positive X area
     robot.StepAndAssertVisitedFields(CardinalDirection.North, 10, 146);
     RobotAssert.AreEqual(robot.CurrentCoordinate, -15, -70);
     robot.StepAndAssertVisitedFields(CardinalDirection.East, 100, 245);
     RobotAssert.AreEqual(robot.CurrentCoordinate, 85, -70);
 }
Exemple #7
0
 public void TestRobotZeroLifetime()
 {
     var robot = new Robot();
     robot.Initialize(0, 0, 0);
     Assert.IsTrue(robot.IsDone());
 }