Files
python/exercises/robot-simulator/robot_simulator_test.py

76 lines
2.3 KiB
Python
Raw Normal View History

import unittest
from robot_simulator import Robot, NORTH, EAST, SOUTH, WEST
# Tests adapted from `problem-specifications//canonical-data.json` @ v2.2.0
2018-06-13 09:12:09 -04:00
class RobotSimulatorTest(unittest.TestCase):
def test_init(self):
robot = Robot()
self.assertEqual(robot.coordinates, (0, 0))
self.assertEqual(robot.bearing, NORTH)
def test_setup(self):
robot = Robot(SOUTH, -1, 1)
self.assertEqual(robot.coordinates, (-1, 1))
self.assertEqual(robot.bearing, SOUTH)
def test_turn_right(self):
robot = Robot()
for direction in [EAST, SOUTH, WEST, NORTH]:
robot.turn_right()
self.assertEqual(robot.bearing, direction)
def test_turn_left(self):
robot = Robot()
for direction in [WEST, SOUTH, EAST, NORTH]:
robot.turn_left()
self.assertEqual(robot.bearing, direction)
def test_advance_positive_north(self):
robot = Robot(NORTH, 0, 0)
robot.advance()
self.assertEqual(robot.coordinates, (0, 1))
self.assertEqual(robot.bearing, NORTH)
def test_advance_negative_south(self):
robot = Robot(SOUTH, 0, 0)
robot.advance()
self.assertEqual(robot.coordinates, (0, -1))
self.assertEqual(robot.bearing, SOUTH)
def test_advance_positive_east(self):
robot = Robot(EAST, 0, 0)
robot.advance()
self.assertEqual(robot.coordinates, (1, 0))
self.assertEqual(robot.bearing, EAST)
def test_advance_negative_west(self):
robot = Robot(WEST, 0, 0)
robot.advance()
self.assertEqual(robot.coordinates, (-1, 0))
self.assertEqual(robot.bearing, WEST)
def test_simulate_prog1(self):
robot = Robot(NORTH, 0, 0)
robot.simulate("LAAARALA")
self.assertEqual(robot.coordinates, (-4, 1))
self.assertEqual(robot.bearing, WEST)
def test_simulate_prog2(self):
robot = Robot(EAST, 2, -7)
robot.simulate("RRAAAAALA")
self.assertEqual(robot.coordinates, (-3, -8))
self.assertEqual(robot.bearing, SOUTH)
def test_simulate_prog3(self):
robot = Robot(SOUTH, 8, 4)
robot.simulate("LAAARRRALLLL")
self.assertEqual(robot.coordinates, (11, 5))
self.assertEqual(robot.bearing, NORTH)
2016-11-29 09:44:47 +01:00
if __name__ == '__main__':
unittest.main()