2015-11-08 09:31:58 +01:00
|
|
|
import unittest
|
|
|
|
|
|
2015-11-16 17:36:54 +01:00
|
|
|
from robot_simulator import Robot, NORTH, EAST, SOUTH, WEST
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class RobotTests(unittest.TestCase):
|
|
|
|
|
|
2015-11-16 17:36:54 +01:00
|
|
|
def test_init(self):
|
|
|
|
|
robot = Robot()
|
|
|
|
|
self.assertEqual((0, 0), robot.coordinates)
|
|
|
|
|
self.assertEqual(NORTH, robot.bearing)
|
|
|
|
|
|
2015-11-08 09:31:58 +01:00
|
|
|
def test_setup(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(SOUTH, -1, 1)
|
|
|
|
|
self.assertEqual((-1, 1), robot.coordinates)
|
|
|
|
|
self.assertEqual(SOUTH, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_turn_right(self):
|
|
|
|
|
robot = Robot()
|
2015-11-16 17:36:54 +01:00
|
|
|
for direction in [EAST, SOUTH, WEST, NORTH]:
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.turn_right()
|
|
|
|
|
self.assertEqual(robot.bearing, direction)
|
|
|
|
|
|
|
|
|
|
def test_turn_left(self):
|
|
|
|
|
robot = Robot()
|
2015-11-16 17:36:54 +01:00
|
|
|
for direction in [WEST, SOUTH, EAST, NORTH]:
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.turn_left()
|
|
|
|
|
self.assertEqual(robot.bearing, direction)
|
|
|
|
|
|
|
|
|
|
def test_advance_positive_north(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(NORTH, 0, 0)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.advance()
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((0, 1), robot.coordinates)
|
|
|
|
|
self.assertEqual(NORTH, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_advance_positive_east(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(EAST, 0, 0)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.advance()
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((1, 0), robot.coordinates)
|
|
|
|
|
self.assertEqual(EAST, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_advance_negative_south(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(SOUTH, 0, 0)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.advance()
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((0, -1), robot.coordinates)
|
|
|
|
|
self.assertEqual(SOUTH, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_advance_positive_west(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(WEST, 0, 0)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.advance()
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((-1, 0), robot.coordinates)
|
|
|
|
|
self.assertEqual(WEST, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_simulate_prog1(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(NORTH, 0, 0)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.simulate("LAAARALA")
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((-4, 1), robot.coordinates)
|
|
|
|
|
self.assertEqual(WEST, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_simulate_prog2(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(EAST, 2, -7)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.simulate("RRAAAAALA")
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((-3, -8), robot.coordinates)
|
|
|
|
|
self.assertEqual(SOUTH, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
|
|
|
|
def test_simulate_prog3(self):
|
2015-11-16 17:36:54 +01:00
|
|
|
robot = Robot(SOUTH, 8, 4)
|
2015-11-08 09:31:58 +01:00
|
|
|
robot.simulate("LAAARRRALLLL")
|
2015-11-16 17:36:54 +01:00
|
|
|
self.assertEqual((11, 5), robot.coordinates)
|
|
|
|
|
self.assertEqual(NORTH, robot.bearing)
|
2015-11-08 09:31:58 +01:00
|
|
|
|
2016-11-29 09:44:47 +01:00
|
|
|
|
2015-11-08 09:31:58 +01:00
|
|
|
if __name__ == '__main__':
|
|
|
|
|
unittest.main()
|