class CityTestCase(TestCase): def setUp(self): self.city = City('London', 'Blue') def test_init(self): city = City('London', 'Blue') self.assertEqual('London', city.name) self.assertEqual('Blue', city.colour) self.assertFalse(city.has_lab) def test_init_city_colours(self): self.city.cubes = {} cube_colours = ['Red', 'Yellow'] self.city.init_city_colours(cube_colours) self.assertEqual(0, self.city.cubes['Red']) self.assertEqual(0, self.city.cubes['Yellow']) def add_cube(self, colour): self.city.cubes['Black'] = 2 self.city.add_cube('Black') self.assertEqual(3, self.city.cubes['Black']) def test_remove_cube(self): self.city.cubes['Black'] = 2 self.city.remove_cube('Black') self.assertEqual(1, self.city.cubes['Black']) self.city.cubes['Black'] = 0 with self.assertRaises(GameException): self.city.remove_cube('Black') self.assertEqual(0, self.city.cubes['Black']) def test_remove_all_cubes(self): self.city.cubes['Red'] = 3 dropped_cubes = self.city.remove_all_cubes('Red') self.assertEqual(3, dropped_cubes) self.assertEqual(0, self.city.cubes['Red']) with self.assertRaises(GameException): self.city.remove_all_cubes('Red') self.assertEqual(0, self.city.cubes['Red']) def test_build_lab(self): success = self.city.build_lab() self.assertTrue(success) self.assertTrue(self.city.has_lab) success = self.city.build_lab() self.assertFalse(success) self.assertTrue(self.city.has_lab) def test_add_connection(self): another_city = City('New York', 'Yellow') self.city.add_connection(another_city) self.assertIn(another_city, self.city.connected_cities) def test_get_max_cubes(self): self.city.cubes['Blue'] = 1 self.city.cubes['Red'] = 2 self.city.cubes['Yellow'] = 4 self.assertEqual(4, self.city.get_max_cubes()) def test_get_cubes(self): self.city.cubes['Blue'] = 2 self.assertEqual(2, self.city.cubes['Blue'])