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_named_coast(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) spain = CoastalTerritory(self.state, 2, 'Spain', None, [], []) spain_north_coast = NamedCoast(self.state, 1, 'North Coast', spain, []) self.assertEqual(spain.named_coasts, [spain_north_coast]) self.assertEqual(london.named_coasts, [])
def test_is_complex(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) spain = CoastalTerritory(self.state, 2, 'Spain', None, [], []) NamedCoast(self.state, 1, 'North Coast', spain, []) self.assertTrue(spain.is_complex) self.assertFalse(london.is_complex)
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 setUp(self): self.state = State() self.portugal = CoastalTerritory(11, 'Portugal', None, [], []) self.spain = CoastalTerritory(10, 'Spain', None, [], []) self.spain_south_coast = NamedCoast(2, 'South Coast', self.spain, []) to_register = [self.spain, self.spain_south_coast] [self.state.register(o) for o in to_register]
def test_named_coast(self): london = CoastalTerritory(1, 'London', 'England', [], []) spain = CoastalTerritory(2, 'Spain', None, [], []) spain_north_coast = NamedCoast(1, 'North Coast', spain, []) self.state.register(london, spain, spain_north_coast) self.assertEqual(spain.named_coasts, {spain_north_coast}) self.assertEqual(london.named_coasts, set())
def test_is_complex(self): london = CoastalTerritory(1, 'London', 'England', [], []) spain = CoastalTerritory(2, 'Spain', None, [], []) spain_north_coast = NamedCoast(1, 'North Coast', spain, []) self.state.register(london, spain, spain_north_coast) self.assertTrue(spain.is_complex) self.assertFalse(london.is_complex)
def test_occupied(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [], []) Army(self.state, 0, 'England', london) self.assertTrue(london.occupied) self.assertFalse(wales.occupied)
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(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_coastal(self): picardy = CoastalTerritory(self.state, 1, 'Picardy', 'France', [], []) english_channel = SeaTerritory(self.state, 2, 'English Channel', []) brest = CoastalTerritory(self.state, 3, 'Brest', 'France', [], []) army = Army(self.state, 0, 'England', picardy) fleet = Fleet(self.state, 0, 'France', english_channel) self.assertTrue(brest.accessible_by_piece_type(army)) self.assertTrue(brest.accessible_by_piece_type(fleet))
def test_occupied(self): london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) self.state.register(london, wales) army_london = Army('England', london) self.state.register(army_london) self.assertTrue(london.occupied) self.assertFalse(wales.occupied)
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_order_exists(self): state = State() london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) army = Army('England', london) london_move = Move('England', london, wales) to_register = [london, wales, army, london_move] [state.register(o) for o in to_register] self.assertEqual(army.order, london_move)
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_piece(self): london = CoastalTerritory(self.state, 1, 'London', 'England', [], []) wales = CoastalTerritory(self.state, 2, 'Wales', 'England', [], []) army = Army(self.state, 0, 'England', london) london_hold = Hold(self.state, 0, 'England', london) wales_hold = Hold(self.state, 0, 'England', wales) self.assertEqual(london_hold.piece, army) self.assertIsNone(wales_hold.piece)
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_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_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_coastal(self): picardy = CoastalTerritory(1, 'Picardy', 'France', [], []) english_channel = SeaTerritory(2, 'English Channel', []) brest = CoastalTerritory(3, 'Brest', 'France', [], []) self.state.register(picardy, english_channel, brest) army = Army('England', picardy) fleet = Fleet('France', english_channel) self.state.register(army, fleet) self.assertTrue(brest.accessible_by_piece_type(army)) self.assertTrue(brest.accessible_by_piece_type(fleet))
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 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 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_piece(self): state = State() london = CoastalTerritory(1, 'London', 'England', [], []) wales = CoastalTerritory(2, 'Wales', 'England', [], []) army = Army('England', london) london_hold = Hold('England', london) wales_hold = Hold('England', wales) to_register = [london, wales, army, london_hold, wales_hold] [state.register(o) for o in to_register] self.assertEqual(london_hold.piece, army) self.assertIsNone(wales_hold.piece)
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_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_serialize_state_territory(self): CoastalTerritory(self.state, 1, 'London', 1, [2], []) data = TurnSchema().dump(self.state) territory_data = (dict(data['territories'][0])) self.assertEqual( sorted(territory_data.keys()), ['bounce_occurred', 'captured_by', 'id'] )
def test_hold(self): london = CoastalTerritory(1, 'London', 'England', [], []) Army('England', london) london_hold = Hold('England', london) self.assertTrue(london_hold.is_hold) self.assertFalse(london_hold.is_move) with self.assertRaises(AttributeError): london_hold.is_fake_class_name
def test_serialize_state_order(self): london = CoastalTerritory(self.state, 1, 'London', 1, [2], []) Hold(self.state, 1, 1, london) data = TurnSchema().dump(self.state) order_data = (dict(data['orders'][0])) self.assertEqual( sorted(order_data.keys()), ['id', 'illegal', 'illegal_code', 'illegal_verbose', 'outcome'] )