def test_captured_includes_controlled_by_other(self): territory = InlandTerritory(self.state, 1, 'Paris', 2, [], controlled_by=self.other_nation.id) territory.captured_by = self.nation.id self.assertEqual(self.nation.captured_territories, [territory])
def test_next_turn_supply_center_count_captured_from_other(self): territory = InlandTerritory(self.state, 1, 'Paris', 2, [], True, controlled_by=self.other_nation.id) territory.captured_by = self.nation.id self.assertEqual(self.nation.next_turn_supply_center_count, 1)
def test_inland(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [], []) english_channel = SeaTerritory(self.state, 2, 'English Channel', []) paris = InlandTerritory(self.state, 3, 'Paris', 'France', []) army = Army(self.state, 0, 'England', picardy) fleet = Fleet(self.state, 0, 'France', english_channel) self.assertTrue(paris.accessible_by_piece_type(army)) self.assertFalse(paris.accessible_by_piece_type(fleet))
def test_occupied_by(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [], []) paris = InlandTerritory(self.state, 3, 'Paris', 'England', []) Army(self.state, 0, 'England', london) Army(self.state, 0, 'France', paris) self.assertTrue(london.occupied_by('England')) self.assertFalse(wales.occupied_by('England')) self.assertFalse(paris.occupied_by('England'))
def test_friendly_piece_exists(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [], []) paris = InlandTerritory(self.state, 3, 'Paris', 'France', []) Army(self.state, 0, 'England', london) Army(self.state, 0, 'France', wales) self.assertTrue(london.friendly_piece_exists('England')) self.assertFalse(wales.friendly_piece_exists('England')) self.assertFalse(paris.friendly_piece_exists('England'))
def test_friendly_piece_exists(self): london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) paris = InlandTerritory(3, 'Paris', 'France', []) self.state.register(london, wales, paris) army_london = Army('England', london) army_wales = Army('France', wales) self.state.register(army_london, army_wales) self.assertTrue(london.friendly_piece_exists('England')) self.assertFalse(wales.friendly_piece_exists('England')) self.assertFalse(paris.friendly_piece_exists('England'))
def test_occupied_by(self): london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) paris = InlandTerritory(3, 'Paris', 'England', []) self.state.register(london, wales, paris) army_london = Army('England', london) army_paris = Army('France', paris) self.state.register(army_london, army_paris) self.assertTrue(london.occupied_by('England')) self.assertFalse(wales.occupied_by('England')) self.assertFalse(paris.occupied_by('England'))
def setUp(self): self.state = State() self.paris = InlandTerritory(1, 'Paris', 'France', [7]) self.london = CoastalTerritory(2, 'London', 'England', [3, 6], [3]) self.wales = CoastalTerritory(3, 'Wales', 'England', [2, 6], [2]) self.munich = InlandTerritory(4, 'Munich', 'Germany', [5]) self.silesia = InlandTerritory(5, 'Silesia', 'Germany', [4]) self.english_channel = SeaTerritory(6, 'English Channel', [2, 3]) self.brest = CoastalTerritory(7, 'Brest', 'France', [1, 6], []) to_register = [self.paris, self.london, self.wales, self.munich, self.silesia, self.english_channel, self.brest] [self.state.register(o) for o in to_register]
def test_register_territory_updates_neighbours(self): state = State() paris = InlandTerritory(1, 'paris', Nations.FRANCE, [2, 3]) burgundy = InlandTerritory(2, 'burgundy', Nations.FRANCE, [1, 3]) gascony = InlandTerritory(3, 'gascony', Nations.FRANCE, [1, 2]) state.register(paris) state.register(burgundy) state.register(gascony) self.assertTrue(paris in burgundy.neighbours) self.assertTrue(paris in gascony.neighbours) self.assertTrue(burgundy in paris.neighbours) self.assertTrue(burgundy in gascony.neighbours) self.assertTrue(gascony in paris.neighbours) self.assertTrue(gascony in burgundy.neighbours)
def setUp(self): self.state = State() self.paris = InlandTerritory(1, 'Paris', 'France', [7]) self.london = CoastalTerritory(2, 'London', 'England', [3, 6], [3]) self.wales = CoastalTerritory(3, 'Wales', 'England', [2, 6], [2]) self.english_channel = SeaTerritory(6, 'English Channel', [2, 3]) self.brest = CoastalTerritory(7, 'Brest', 'France', [1, 6], []) self.rome = CoastalTerritory(8, 'Rome', 'Italy', [9], []) self.apulia = CoastalTerritory(9, 'Apulia', 'Italy', [8], []) self.spain = CoastalTerritory(10, 'Spain', None, [11, 12, 13, 14], [11, 12]) self.gascony = CoastalTerritory(11, 'Gascony', 'France', [10], []) self.marseilles = CoastalTerritory(12, 'Marseilles', 'France', [10], [10]) self.mid_atlantic = SeaTerritory(13, 'Mid Atlantic', [10]) self.gulf_of_lyon = SeaTerritory(14, 'Gulf of Lyon', [10]) self.spain_north_coast = NamedCoast(1, 'North Coast', self.spain, [self.gascony, self.mid_atlantic]) self.spain_south_coast = NamedCoast( 2, 'South Coast', self.spain, [self.marseilles, self.gulf_of_lyon, self.marseilles]) to_register = [ self.paris, self.london, self.wales, self.english_channel, self.brest, self.rome, self.apulia, self.spain, self.gascony, self.marseilles, self.mid_atlantic, self.gulf_of_lyon, self.spain_north_coast, self.spain_south_coast ] [self.state.register(o) for o in to_register]
def test_attacking_piece_exists(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [2], []) paris = InlandTerritory(self.state, 2, 'Paris', 'France', [1]) army_paris = Army(self.state, 0, 'France', paris) Move(self.state, 0, 'France', paris, picardy) self.assertEqual(picardy.attacking_pieces, [army_paris])
def test_neighbours(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [2], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [1], []) paris = InlandTerritory(self.state, 3, 'Paris', 'France', []) self.assertTrue(london.adjacent_to(wales)) self.assertFalse(london.adjacent_to(paris))
def test_does_not_include_no_supply_center_controlled(self): InlandTerritory(self.state, 1, 'Paris', 2, [], controlled_by=self.nation.id) self.assertEqual(self.nation.next_turn_supply_center_count, 0)
def test_controlled_territories(self): territory = InlandTerritory(self.state, 1, 'Paris', 2, [], controlled_by=self.nation.id) self.assertEqual(self.nation.controlled_territories, [territory])
def test_next_turn_supply_center_count_controlled(self): InlandTerritory(self.state, 1, 'Paris', 2, [], True, controlled_by=self.nation.id) self.assertEqual(self.nation.next_turn_supply_center_count, 1)
def test_shared_coasts(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [2], [2]) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [1], [1]) paris = InlandTerritory(self.state, 3, 'Paris', 'France', []) self.assertEqual(london.shared_coasts, [wales]) self.assertEqual(wales.shared_coasts, [london]) self.assertFalse(paris in london.neighbours)
def test_attacking_piece_exists(self): picardy = CoastalTerritory(1, 'Picardy', 'France', [2], []) paris = InlandTerritory(2, 'Paris', 'France', [1]) army_paris = Army('France', paris) move = Move('France', paris, picardy) self.state.register(picardy, paris, army_paris, move) self.assertEqual(picardy.attacking_pieces, {army_paris})
def test_register_piece_updates_territory(self): state = State() paris = InlandTerritory(1, 'paris', Nations.FRANCE, []) army_paris = Army(0, Nations.FRANCE, paris) state.register(paris) state.register(army_paris) self.assertEqual(paris.piece, army_paris)
def test_shared_coasts(self): london = CoastalTerritory(1, 'London', 'England', [2], [2]) wales = CoastalTerritory(2, 'Wales', 'England', [1], [1]) paris = InlandTerritory(3, 'Paris', 'France', []) self.state.register(london, wales, paris) self.assertEqual(london.shared_coasts, {wales}) self.assertEqual(wales.shared_coasts, {london}) self.assertFalse(paris in london.neighbours)
def test_supporting_piece_not_included(self): picardy = CoastalTerritory(1, 'Picardy', 'France', [2, 3], []) paris = InlandTerritory(2, 'Paris', 'France', [1]) brest = CoastalTerritory(3, 'Brest', 'France', [1], []) fleet_brest = Fleet('France', brest) support = Support('France', paris, brest, picardy) move = Move('France', brest, picardy) self.state.register(picardy, paris, brest, fleet_brest, move, support) self.assertEqual(picardy.attacking_pieces, {fleet_brest})
def test_supporting_piece_not_included(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [2, 3], []) paris = InlandTerritory(self.state, 2, 'Paris', 'France', [1]) brest = CoastalTerritory(self.state, 3, 'Brest', 'France', [1], []) fleet_brest = Fleet(self.state, 0, 'France', brest) Support(self.state, 0, 'France', paris, brest, picardy) Move(self.state, 0, 'France', brest, picardy) self.assertEqual(picardy.attacking_pieces, [fleet_brest])
def test_other_attacking_pieces(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [2], []) paris = InlandTerritory(self.state, 2, 'Paris', 'France', [1]) brest = CoastalTerritory(self.state, 3, 'Brest', 'France', [1], []) army_paris = Army(self.state, 0, 'England', paris) fleet_brest = Fleet(self.state, 0, 'France', brest) Move(self.state, 0, 'England', paris, picardy) Move(self.state, 0, 'France', brest, picardy) self.assertEqual(picardy.other_attacking_pieces(fleet_brest), [army_paris])
def test_piece(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [], []) paris = InlandTerritory(self.state, 3, 'Paris', 'France', []) army_london = Army(self.state, 0, 'England', london) army_wales = Army(self.state, 0, 'England', wales) self.assertEqual(army_london, london.piece) self.assertEqual(army_wales, wales.piece) self.assertIsNone(paris.piece)
def test_next_turn_supply_delta(self): territory = InlandTerritory(self.state, 1, 'Paris', 2, [], True, controlled_by=self.nation.id) army = Army(self.state, 1, self.nation.id, territory) self.assertEqual(self.nation.next_turn_supply_delta, 0) army.destroyed = True self.assertEqual(self.nation.next_turn_supply_delta, 1)
def test_multiple_attacking_piece_exist(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [2, 3], []) paris = InlandTerritory(self.state, 2, 'Paris', 'France', [1]) brest = CoastalTerritory(self.state, 3, 'Brest', 'France', [1], []) army_paris = Army(self.state, 0, 'France', paris) fleet_brest = Fleet(self.state, 0, 'France', brest) Move(self.state, 0, 'France', paris, picardy) Move(self.state, 0, 'France', brest, picardy) self.assertEqual(set(picardy.attacking_pieces), set([army_paris, fleet_brest]))
def test_multiple_attacking_piece_exist(self): picardy = CoastalTerritory(1, 'Picardy', 'France', [2, 3], []) paris = InlandTerritory(2, 'Paris', 'France', [1]) brest = CoastalTerritory(3, 'Brest', 'France', [1], []) army_paris = Army('France', paris) fleet_brest = Fleet('France', brest) move_1 = Move('France', paris, picardy) move_2 = Move('France', brest, picardy) self.state.register(picardy, paris, brest, army_paris, fleet_brest, move_1, move_2) self.assertEqual(picardy.attacking_pieces, {army_paris, fleet_brest})
def test_register_order_updates_piece_order(self): state = State() paris = InlandTerritory(1, 'paris', Nations.FRANCE, []) army_paris = Army(0, Nations.FRANCE, paris) hold = Hold(0, Nations.FRANCE, paris) state.register(paris) state.register(army_paris) state.register(hold) self.assertEqual(army_paris.order, hold) self.assertEqual(hold.piece, army_paris)
def test_piece(self): london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) paris = InlandTerritory(3, 'Paris', 'France', []) self.state.register(london, wales, paris) army_london = Army('England', london) army_wales = Army('England', wales) self.state.register(army_london, army_wales) self.assertEqual(army_london, london.piece) self.assertEqual(army_wales, wales.piece) self.assertIsNone(paris.piece)
def test_other_attacking_pieces(self): picardy = CoastalTerritory(1, 'Picardy', 'France', [2], []) paris = InlandTerritory(2, 'Paris', 'France', [1]) brest = CoastalTerritory(3, 'Brest', 'France', [1], []) army_paris = Army('England', paris) fleet_brest = Fleet('France', brest) move_1 = Move('England', paris, picardy) move_2 = Move('France', brest, picardy) self.state.register(picardy, paris, brest, army_paris, fleet_brest, move_1, move_2) self.assertEqual(picardy.other_attacking_pieces(fleet_brest), [army_paris])
def __init__(self, state): self.ADRIATIC_SEA = SeaTerritory(state, 1, 'adriatic sea', [20, 22, 11, 53, 56]) self.AEGEAN_SEA = SeaTerritory(state, 2, 'aegean sea', [5, 73, 28, 7, 33, 11, 50]) self.BALTIC_SEA = SeaTerritory(state, 3, 'baltic sea', [24, 6, 29, 35, 48, 51, 37]) self.BARRENTS_SEA = SeaTerritory(state, 4, 'barrents sea', [15, 42, 75]) self.BLACK_SEA = SeaTerritory(state, 5, 'black sea', [21, 23, 73, 28, 47, 49]) self.GULF_OF_BOTHNIA = SeaTerritory(state, 6, 'gulf of bothnia', [3, 31, 37, 51, 75, 75]) self.EASTERN_MEDITERRANEAN = SeaTerritory(state, 7, 'eastern mediterranean', [2, 50, 52]) self.ENGLISH_CHANNEL = SeaTerritory(state, 8, 'english channel', [25, 26, 12, 36, 13, 16, 43, 57]) self.GULF_OF_LYON = SeaTerritory(state, 9, 'gulf of lyon', [39, 44, 74, 55, 18, 19]) self.HELGOLAND_BIGHT = SeaTerritory(state, 10, 'helgoland bight', [29, 34, 35, 16]) self.IONIAN_SEA = SeaTerritory(state, 11, 'ionian sea', [2, 1, 20, 22, 33, 41, 54, 18]) self.IRISH_SEA = SeaTerritory(state, 12, 'irish sea', [8, 38, 13, 14, 57]) self.MID_ATLANTIC = SeaTerritory(state, 13, 'mid atlantic', [26, 8, 32, 12, 40, 14, 74, 45, 19]) self.NORTH_ATLANTIC = SeaTerritory(state, 14, 'north atlantic', [27, 12, 38, 13, 15]) self.NORWEGIAN_SEA = SeaTerritory(state, 15, 'norwegian sea', [4, 27, 30, 14, 42, 16]) self.NORTH_SEA = SeaTerritory( state, 16, 'north sea', [25, 29, 30, 8, 10, 34, 36, 15, 42, 17, 58]) self.SKAGERRAK = SeaTerritory(state, 17, 'skagerrak', [29, 16, 42, 51]) self.TYRRHENIAN_SEA = SeaTerritory(state, 18, 'tyrrhenian sea', [9, 11, 41, 46, 54, 55, 19]) self.WESTERN_MEDITERRANEAN = SeaTerritory(state, 19, 'western mediterranean', [9, 13, 40, 74, 54, 18]) self.ALBANIA = CoastalTerritory(state, 20, 'albania', None, [1, 33, 11, 67, 53], [33, 53]) self.ANKARA = CoastalTerritory(state, 21, 'ankara', 7, [23, 5, 28, 50], [23, 28]) self.APULIA = CoastalTerritory(state, 22, 'apulia', 5, [1, 11, 41, 46, 56], [41, 56]) self.ARMENIA = CoastalTerritory(state, 23, 'armenia', 7, [21, 21, 49, 50, 52], [49, 21]) self.BERLIN = CoastalTerritory(state, 24, 'berlin', Nations.GERMANY, [3, 35, 64, 48, 68], [35, 48], supply_center=True, controlled_by=Nations.GERMANY) self.BELGIUM = CoastalTerritory(state, 25, 'belgium', None, [61, 8, 34, 43, 66, 16], [34, 43]) self.BREST = CoastalTerritory(state, 26, 'brest', 2, [8, 32, 13, 65, 43], [32, 43]) self.CLYDE = CoastalTerritory(state, 27, 'clyde', 1, [30, 38, 12, 14, 15], [30, 38]) self.CONSTANTINOPLE = CoastalTerritory(state, 28, 'constantinople', 7, [2, 21, 5, 73, 50], [21, 50]) self.DENMARK = CoastalTerritory(state, 29, 'denmark', None, [3, 10, 35, 16, 17, 51], [35, 51]) self.EDINBURGH = CoastalTerritory(state, 30, 'edinburgh', 1, [27, 38, 15, 16, 58], [27, 58]) self.FINLAND = CoastalTerritory(state, 31, 'finland', None, [6, 42, 75, 51], [51]) self.GASCONY = CoastalTerritory(state, 32, 'gascony', 2, [26, 61, 39, 13, 65, 74], [26]) self.GREECE = CoastalTerritory(state, 33, 'greece', None, [2, 20, 73, 11, 67], [20, 73]) self.HOLLAND = CoastalTerritory(state, 34, 'holland', None, [25, 10, 35, 16, 66], [25, 35]) self.KIEL = CoastalTerritory(state, 35, 'kiel', 3, [3, 24, 29, 10, 34, 64, 66], [24, 29, 34]) self.LONDON = CoastalTerritory(state, 36, 'london', 1, [8, 16, 57, 58], [57, 58]) self.LIVONIA = CoastalTerritory(state, 37, 'livonia', 6, [3, 6, 63, 48, 75, 72], [48]) self.LIVERPOOL = CoastalTerritory(state, 38, 'liverpool', 1, [27, 30, 12, 14, 57, 58], [27, 57]) self.MARSEILLES = CoastalTerritory(state, 39, 'marseilles', 2, [61, 32, 9, 44, 74], [44, 74]) self.NORTH_AFRICA = CoastalTerritory(state, 40, 'north africa', None, [13, 54, 19], [54]) self.NAPLES = CoastalTerritory(state, 41, 'naples', 5, [22, 11, 46, 18], [22, 46]) self.NORWAY = CoastalTerritory(state, 42, 'norway', None, [4, 31, 15, 16, 17, 75, 51], [51]) self.PICARDY = CoastalTerritory(state, 43, 'picardy', 2, [26, 25, 61, 8, 65], [26, 25]) self.PIEDMONT = CoastalTerritory(state, 44, 'piedmont', 5, [9, 39, 55, 69, 56], [39, 55]) self.PORTUGAL = CoastalTerritory(state, 45, 'portugal', None, [13, 74], [74]) self.ROME = CoastalTerritory(state, 46, 'rome', 5, [22, 41, 55, 18, 56], [41, 55]) self.RUMANIA = CoastalTerritory(state, 47, 'rumania', None, [5, 60, 73, 62, 67, 49, 70], [49]) self.PRUSSIA = CoastalTerritory(state, 48, 'prussia', 3, [3, 24, 37, 68, 72], [24, 37]) self.SEVASTAPOL = CoastalTerritory(state, 49, 'sevastapol', 6, [23, 5, 63, 47, 70], [24, 47]) self.SMYRNA = CoastalTerritory(state, 50, 'smyrna', 7, [2, 23, 21, 28, 7, 52], [28, 52]) self.SWEDEN = CoastalTerritory(state, 51, 'sweden', None, [3, 6, 29, 31, 42, 17], [29, 31, 42]) self.SYRIA = CoastalTerritory(state, 52, 'syria', 7, [23, 7, 50], [50]) self.TRIESTE = CoastalTerritory(state, 53, 'trieste', 4, [1, 20, 60, 52, 69, 67, 56, 71], [20, 56]) self.TUNIS = CoastalTerritory(state, 54, 'tunis', None, [11, 40, 18, 19], [40]) self.TUSCANY = CoastalTerritory(state, 55, 'tuscany', 5, [9, 44, 46, 18, 56], [44, 46]) self.VENICE = CoastalTerritory(state, 56, 'venice', 5, [1, 22, 46, 44, 53, 18, 69], [22, 53]) self.WALES = CoastalTerritory(state, 57, 'wales', 1, [8, 12, 36, 38, 58], [36, 38]) self.YORKSHIRE = CoastalTerritory(state, 58, 'yorkshire', 1, [30, 36, 38, 16, 57], [30, 36]) self.BOHEMIA = InlandTerritory(state, 59, 'bohemia', 4, [62, 64, 68, 69, 71]) self.BUDAPEST = InlandTerritory(state, 60, 'budapest', 4, [62, 47, 67, 53, 71]) self.BURGUNDY = InlandTerritory(state, 61, 'burgundy', 2, [25, 32, 39, 64, 65, 43, 66]) self.GALICIA = InlandTerritory(state, 62, 'galicia', 4, [59, 60, 47, 68, 70, 71, 72]) self.MOSCOW = InlandTerritory(state, 63, 'moscow', Nations.RUSSIA, [37, 47, 49, 75, 70, 72], supply_center=True, controlled_by=Nations.RUSSIA) self.MUNICH = InlandTerritory(state, 64, 'munich', 3, [24, 59, 61, 35, 68, 66, 69]) self.PARIS = InlandTerritory(state, 65, 'paris', 2, [26, 61, 32, 43, 68, 66, 69]) self.RUHR = InlandTerritory(state, 66, 'ruhr', 3, [25, 61, 34, 35, 64]) self.SERBIA = InlandTerritory(state, 67, 'serbia', None, [20, 60, 73, 33, 47, 53]) self.SILESIA = InlandTerritory(state, 68, 'silesia', 3, [24, 59, 62, 64, 48, 72]) self.TYROLIA = InlandTerritory(state, 69, 'tyrolia', 4, [59, 64, 53, 56, 71]) self.UKRAINE = InlandTerritory(state, 70, 'ukraine', 6, [62, 63, 47, 49, 72]) self.VIENNA = InlandTerritory(state, 71, 'vienna', 4, [59, 60, 62, 53, 69]) self.WARSAW = InlandTerritory(state, 72, 'warsaw', 6, [62, 37, 63, 68, 48, 70]) self.BULGARIA = CoastalTerritory(state, 73, 'bulgaria', None, [2, 5, 28, 33, 47, 67], [47, 33, 28]) self.SPAIN = CoastalTerritory(state, 74, 'spain', None, [32, 39, 45, 9, 19, 13], [32, 45, 39]) self.ST_PETERSBURG = CoastalTerritory(state, 75, 'st. petersburg', Nations.RUSSIA, [4, 31, 37, 63, 42], [37, 31, 42], supply_center=True, controlled_by=Nations.RUSSIA)