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)
Example #3
0
    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)
Example #4
0
    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)
Example #7
0
    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)
Example #8
0
    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)