public void TestRobotInitialization() { var robot = new Robot(); robot.Initialize(1, 10, 15); RobotAssert.AreEqual(robot.CurrentCoordinate, 10, 15); Assert.AreEqual(1, robot.NumberOfUniqueVisitedFields); }
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)); }
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)); }
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()); }
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); }
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); }
public void TestRobotZeroLifetime() { var robot = new Robot(); robot.Initialize(0, 0, 0); Assert.IsTrue(robot.IsDone()); }