class GameSetupTestCase(TestCase): @classmethod def setUpClass(cls): cls.settings = config.get_settings(SETTINGS_LOCATION, refresh=True) def setUp(self): self.pg = Game() self.pg.settings = self.settings def test_add_player(self): players = [Player('Evie'), Player('Amelia')] for player in players: self.pg.add_player(player) with self.subTest(player=player): self.assertIs(self.pg, player.game) self.assertIn(player, self.pg.players) self.assertEqual(player.name, self.pg.players[-1].name) def test_get_infection_rate(self): self.pg.get_infection_rate() self.assertEqual(2, self.pg.infection_rate) def test_get_new_cities(self): self.pg.get_new_cities() self.assertEqual(40, len(self.pg.city_map)) self.assertIn('London', self.pg.city_map) city = self.pg.city_map['London'] self.assertEqual('London', city.name) self.assertEqual('Blue', city.colour) self.assertEqual('Yellow', self.pg.city_map['Washington'].colour) self.assertEqual(6, len(city.connected_cities)) self.assertIn(self.pg.city_map['Washington'], city.connected_cities) self.assertNotIn(self.pg.city_map['Liverpool'], city.connected_cities) def test_make_cities(self): # TODO: get around implicit method call self.pg.get_new_cities() city = self.pg.city_map['London'] self.assertEqual(6, len(city.connected_cities)) self.assertIn(self.pg.city_map['Washington'], city.connected_cities) self.assertNotIn(self.pg.city_map['Liverpool'], city.connected_cities) def test_get_new_decks(self): self.pg.get_new_decks() deck = self.pg.player_deck self.assertEqual('London', deck.cards[0].name) self.assertEqual('Black', deck.cards[29].colour) deck = self.pg.infect_deck self.assertEqual('London', deck.cards[0].name) self.assertEqual('Black', deck.cards[29].colour) def test_get_new_diseases(self): self.pg.get_new_diseases() self.assertEqual('Red', self.pg.diseases['Red'].colour) self.assertEqual(30, self.pg.disease_cubes['Blue']) def test_set_starting_epidemics(self): self.pg.set_starting_epidemics() self.assertEqual(4, self.pg.starting_epidemics) def test_setup_game(self): del self.pg.settings players = [Player('Evie'), Player('Amelia')] for player in players: self.pg.add_player(player) self.pg.setup_game(SETTINGS_LOCATION) self.assertEqual(self.pg.settings, self.settings) self.assertEqual(0, self.pg.epidemic_count) self.assertEqual(0, self.pg.outbreak_count) self.assertFalse(self.pg.game_won) self.assertFalse(self.pg.game_over) self.assertIn('Yellow', City.cube_colours) City.cube_colours = [] self.assertEqual(2, self.pg.infection_rate) self.assertIn('New York', self.pg.city_map) self.newyork = self.pg.city_map['New York'] self.assertEqual('New York', self.newyork.name) self.assertEqual('Yellow', self.newyork.colour) self.assertEqual(3, len(self.newyork.connected_cities)) top_player_card = self.pg.player_deck.take_top_card() top_infect_card = self.pg.infect_deck.take_top_card() self.assertEqual('London', top_player_card.name) self.assertEqual('London', top_infect_card.name) self.assertEqual('Red', self.pg.diseases['Red'].colour) self.assertEqual(30, self.pg.disease_cubes['Black']) self.assertEqual(4, self.pg.starting_epidemics)