def test_text_init_two(self): "Test the Caves object creation from text for part 2" # 1. Create Caves object from text myobj = caves.Caves(text=aoc_09.from_text(EXAMPLE_TEXT), part2=True) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, True) self.assertEqual(len(myobj.text), 5) self.assertEqual(len(myobj.heights), 50) self.assertEqual(len(myobj.basins), 0) # 3. Check methods self.assertEqual(len(myobj.not_nines((0, 0))), 2) self.assertEqual(len(myobj.not_nines((1, 0))), 1) self.assertEqual(len(myobj.not_nines((9, 0))), 2) self.assertEqual(len(myobj.not_nines((6, 0))), 3) self.assertEqual(len(myobj.not_nines((6, 1))), 1) self.assertEqual(len(myobj.grow_basin((0, 0))), 3) self.assertEqual(len(myobj.grow_basin((9, 0))), 9) self.assertEqual(len(myobj.grow_basin((3, 2))), 14) self.assertEqual(len(myobj.grow_basin((6, 4))), 9) self.assertEqual(myobj.get_basins(), 1134)
def test_text_init(self): "Test the Caves object creation from text" # 1. Create Caves object from text myobj = caves.Caves(text=aoc_09.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 5) self.assertEqual(len(myobj.heights), 50) self.assertEqual(len(myobj.basins), 0) # 3. Check methods self.assertEqual(sum(myobj.adjacent_heights((0, 0))), 4) self.assertEqual(sum(myobj.adjacent_heights((3, 1))), 31) self.assertEqual(sum(myobj.adjacent_heights((9, 0))), 2) self.assertEqual(sum(myobj.adjacent_heights((6, 4))), 18) self.assertEqual(myobj.is_lowest((0, 0)), False) self.assertEqual(myobj.is_lowest((1, 0)), True) self.assertEqual(myobj.is_lowest((9, 0)), True) self.assertEqual(myobj.is_lowest((2, 2)), True) self.assertEqual(myobj.is_lowest((6, 4)), True) self.assertEqual(myobj.is_lowest((3, 3)), False) lowest = myobj.lowest_points() self.assertEqual(len(lowest), 4) self.assertEqual(sum([myobj.heights[l] for l in lowest]), 11) self.assertEqual(myobj.risk((0, 0)), 3) self.assertEqual(myobj.risk((1, 0)), 2) self.assertEqual(myobj.total_risk([(0, 0), (1, 0)]), 5) self.assertEqual(myobj.total_risk(lowest), 15) self.assertEqual(myobj.total_risk(), 15)
def test_part_two(self): "Test part two example of Game object" # 1. Create Game object from text myobj = game.Game(part2=True, text=aoc_09.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT)
def test_part_one(self): "Test part one example of Game object" # 1. Create Game object from text myobj = game.Game(text=aoc_09.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_part_one(self): "Test part two example of Decompress object" # 1. Create Decompress object from text myobj = decompress.Decompress(text=aoc_09.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_text_init(self): "Test the Decompress object creation from text" # 1. Create Decompress object from text myobj = decompress.Decompress(text=aoc_09.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) # 3. Check methods self.assertEqual(myobj.expand(), EXAMPLE_EXPAND)
def test_text_init(self): "Test the Routes object creation from text" # 1. Create Routes object from text myobj = routes.Routes(text=aoc_09.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 3) self.assertEqual(len(myobj.nodes), 3) self.assertEqual(len(myobj.links), 6) self.assertEqual('London' in myobj.nodes, True) self.assertEqual('Bristal' in myobj.nodes, False) self.assertEqual(('London', 'Belfast') in myobj.links, True) self.assertEqual(('Belfast', 'London') in myobj.links, True) self.assertEqual(('London', 'Bristal') in myobj.links, False) self.assertEqual(myobj.links[('London', 'Belfast')], 518) self.assertEqual(myobj.links[('Belfast', 'London')], 518)
def test_text_init(self): "Test the Game object creation from text" # 1. Create Game object from text myobj = game.Game(text=aoc_09.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) self.assertEqual(myobj.num_players, 9) self.assertEqual(myobj.last_marble, 25) self.assertEqual(myobj.current_marble, 0) self.assertEqual(myobj.current_player, None) self.assertEqual(len(myobj.circle), 1) self.assertEqual(myobj.circle[0], 0) self.assertEqual(len(myobj.players), 9) self.assertEqual(myobj.highest_score(), 0) # 3. Walk through the example self.assertEqual(myobj.next_marble(), 1) self.assertEqual(myobj.current_marble, 1) self.assertEqual(myobj.next_player(), 0) myobj.place_marble() self.assertEqual(len(myobj.circle), 2) self.assertEqual(list(myobj.circle), [0, 1]) self.assertEqual(myobj.next_marble(), 2) self.assertEqual(myobj.current_marble, 2) self.assertEqual(myobj.next_player(), 1) myobj.place_marble() self.assertEqual(len(myobj.circle), 3) self.assertEqual(list(myobj.circle), [1, 0, 2]) self.assertEqual(myobj.next_marble(), 3) self.assertEqual(myobj.current_marble, 3) self.assertEqual(myobj.next_player(), 2) myobj.place_marble() self.assertEqual(len(myobj.circle), 4) self.assertEqual(list(myobj.circle), [0, 2, 1, 3]) self.assertEqual(myobj.next_marble(), 4) self.assertEqual(myobj.current_marble, 4) self.assertEqual(myobj.next_player(), 3) myobj.place_marble() self.assertEqual(len(myobj.circle), 5) self.assertEqual(list(myobj.circle), [2, 1, 3, 0, 4]) self.assertEqual(myobj.next_marble(), 5) self.assertEqual(myobj.current_marble, 5) self.assertEqual(myobj.next_player(), 4) myobj.place_marble() self.assertEqual(len(myobj.circle), 6) self.assertEqual(list(myobj.circle), [1, 3, 0, 4, 2, 5]) self.assertEqual(myobj.next_marble(), 6) self.assertEqual(myobj.current_marble, 6) self.assertEqual(myobj.next_player(), 5) myobj.place_marble() self.assertEqual(len(myobj.circle), 7) self.assertEqual(list(myobj.circle), [3, 0, 4, 2, 5, 1, 6]) self.assertEqual(myobj.next_marble(), 7) self.assertEqual(myobj.current_marble, 7) self.assertEqual(myobj.next_player(), 6) myobj.place_marble() self.assertEqual(len(myobj.circle), 8) self.assertEqual(list(myobj.circle), [0, 4, 2, 5, 1, 6, 3, 7]) myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() self.assertEqual(myobj.current_marble, 17) self.assertEqual(len(myobj.circle), 18) self.assertEqual( list(myobj.circle), [4, 9, 2, 10, 5, 11, 1, 12, 6, 13, 3, 14, 7, 15, 0, 16, 8, 17]) self.assertEqual(myobj.highest_score(), 0) myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() myobj.game_turn() self.assertEqual(myobj.current_marble, 22) self.assertEqual(len(myobj.circle), 23) self.assertEqual(list(myobj.circle), [ 11, 1, 12, 6, 13, 3, 14, 7, 15, 0, 16, 8, 17, 4, 18, 9, 19, 2, 20, 10, 21, 5, 22 ]) self.assertEqual(myobj.highest_score(), 0) myobj.game_turn() self.assertEqual(myobj.current_marble, 23) self.assertEqual(len(myobj.circle), 22) self.assertEqual(list(myobj.circle), [ 2, 20, 10, 21, 5, 22, 11, 1, 12, 6, 13, 3, 14, 7, 15, 0, 16, 8, 17, 4, 18, 19 ]) self.assertEqual(myobj.highest_score(), 32) myobj.game_turn() myobj.game_turn() self.assertEqual(myobj.current_marble, 25) self.assertEqual(len(myobj.circle), 24) self.assertEqual(list(myobj.circle), [ 10, 21, 5, 22, 11, 1, 12, 6, 13, 3, 14, 7, 15, 0, 16, 8, 17, 4, 18, 19, 2, 24, 20, 25 ]) self.assertEqual(myobj.highest_score(), 32) self.assertEqual(myobj.players[4], 32) self.assertEqual(myobj.game_turn(), None)