class RobotTestCase(unittest.TestCase): def setUp(self): self.position = Position('3', '2', 'N') self.position.rotateClockwise = MagicMock() self.position.rotateAnticlockwise = MagicMock() self.position.moveForward = MagicMock() self.robot = Robot(self.position) def test_initRobot(self): self.assertEqual(self.robot.position, self.position) def test_rotation(self): self.robot.processInstruction('R', []) self.robot.processInstruction('R', []) self.robot.processInstruction('L', []) self.position.rotateClockwise.assert_called() self.position.rotateAnticlockwise.assert_called() self.assertEqual(self.position.rotateClockwise.call_count, 2) def test_movement(self): self.robot.processInstruction('F', []) self.position.moveForward.assert_called() def test_lostPosition(self): self.robot.processInstruction('F', [self.position]) self.assertFalse(self.robot.position.moveForward.called)