52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
import unittest
|
|
import random
|
|
|
|
from robot_name import Robot
|
|
|
|
|
|
class RobotNameTest(unittest.TestCase):
|
|
# assertRegex() alias to address DeprecationWarning
|
|
# assertRegexpMatches got renamed in version 3.2
|
|
if not hasattr(unittest.TestCase, "assertRegex"):
|
|
assertRegex = unittest.TestCase.assertRegexpMatches
|
|
|
|
name_re = r'^[A-Z]{2}\d{3}$'
|
|
|
|
def test_has_name(self):
|
|
self.assertRegex(Robot().name, self.name_re)
|
|
|
|
def test_name_sticks(self):
|
|
robot = Robot()
|
|
robot.name
|
|
self.assertEqual(robot.name, robot.name)
|
|
|
|
def test_different_robots_have_different_names(self):
|
|
self.assertNotEqual(
|
|
Robot().name,
|
|
Robot().name
|
|
)
|
|
|
|
def test_reset_name(self):
|
|
# Set a seed
|
|
seed = "Totally random."
|
|
|
|
# Initialize RNG using the seed
|
|
random.seed(seed)
|
|
|
|
# Call the generator
|
|
robot = Robot()
|
|
name = robot.name
|
|
|
|
# Reinitialize RNG using seed
|
|
random.seed(seed)
|
|
|
|
# Call the generator again
|
|
robot.reset()
|
|
name2 = robot.name
|
|
self.assertNotEqual(name, name2)
|
|
self.assertRegex(name2, self.name_re)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|