def test_part2_init(self):
        "Test the Cave object creation from text for part2"

        # 1. Create Cave object from text
        myobj = cave.Cave(text=aoc_22.from_text(EXAMPLE_TEXT), part2=True)

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, True)
        self.assertEqual(len(myobj.text), 2)
        self.assertEqual(myobj.depth, 510)
        self.assertEqual(myobj.target, 100010)
        self.assertEqual(myobj.mouth, 0)
        self.assertEqual(len(myobj.regions), 0)
        self.assertEqual(myobj.start, 100000000)
        self.assertEqual(myobj.finish, 100100010)
        self.assertEqual(myobj.maxrow, 60)
        self.assertEqual(myobj.maxrow, 60)

        # 3. Try part one - to build the regions
        self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)

        # 4. What are all the moves from the start
        self.assertEqual(myobj.valid_tool(myobj.start), True)
        moves = myobj.determine_moves(myobj.start)
        self.assertEqual(len(moves), 2)
        self.assertEqual(moves[0], cave.row_col_tool_to_loc(1, 0, cave.TORCH))
        self.assertEqual(moves[1], cave.row_col_tool_to_loc(0, 0, cave.GEAR))
Beispiel #2
0
    def test_text_init(self):
        "Test the Player object creation from text"

        # 1. Create Player object from text
        myobj = player.Player(text=aoc_22.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 4)
        self.assertEqual(myobj.name, 'noone')
        self.assertEqual(len(myobj.attributes), 5)
        self.assertEqual(myobj.attributes['hitpoints'], 10)
        self.assertEqual(myobj.attributes['damage'], 0)
        self.assertEqual(myobj.attributes['armor'], 0)
        self.assertEqual(myobj.attributes['mana'], 250)
        self.assertEqual(myobj.attributes['used'], 0)

        # 3. Check methods
        self.assertEqual(myobj.is_dead(), False)
        self.assertEqual(myobj['hitpoints'], 10)
        self.assertEqual(myobj['damage'], 0)
        self.assertEqual(myobj['armor'], 0)
        myobj['hitpoints'] = 0
        self.assertEqual(myobj.attributes['hitpoints'], 0)
        self.assertEqual(myobj['hitpoints'], 0)
        self.assertEqual(myobj.is_dead(), True)
        myobj['hitpoints'] = 12
        myobj.defend(5)
        self.assertEqual(myobj['hitpoints'], 7)
        self.assertEqual(myobj.is_dead(), False)
    def test_part_two(self):
        "Test part two example of Grid object"

        # 1. Create Grid object from text
        myobj = grid.Grid(part2=True, text=aoc_22.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 Grid object"

        # 1. Create Grid object from text
        myobj = grid.Grid(text=aoc_22.from_text(PART_ONE_TEXT))

        # 2. Check the part one result
        self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
Beispiel #5
0
    def test_part_two_infinite_game_prevention(self):
        "Test infinate game prevention for part two"

        # 1. Create Game object from text
        myobj = game.Game(part2=True, text=aoc_22.from_text(IGP_TEXT))

        # 2. Check the part two result
        self.assertEqual(myobj.part_two(verbose=False, limit=100), 86 + 19)
Beispiel #6
0
    def test_text_init(self):
        "Test the Game object creation from text"

        # 1. Create Game object from text
        myobj = game.Game(text=aoc_22.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 12)
        self.assertEqual(len(myobj.players), 2)
    def test_value_init(self):
        "Test the Node object creation with location and doors"

        # 1. Create Node object from values
        mycave = cave.Cave(text=aoc_22.from_text(EXAMPLE_TEXT), part2=True)
        myobj = path.Node(location=mycave.start, cave=mycave)

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.location, 100000000)
        self.assertEqual(myobj.previous, None)
        self.assertEqual(myobj.cave, mycave)
        self.assertEqual(myobj.minutes, 0)
    def test_value_init(self):
        "Test the Path object creation with values"

        # 1. Create Node object from values
        mycave = cave.Cave(text=aoc_22.from_text(EXAMPLE_TEXT), part2=True)
        myobj = path.Path(start=mycave.start, cave=mycave)

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.start, 100000000)
        self.assertEqual(myobj.cave, mycave)
        self.assertNotEqual(myobj.node, None)
        self.assertEqual(myobj.node.location, myobj.start)
        self.assertEqual(myobj.node.cave, mycave)
        self.assertTrue(len(myobj.nodes), 4)
        self.assertEqual(len(myobj.queue), 0)
    def test_input_init(self):
        "Test the Cave object creation from text"

        # 1. Create Cave object from text
        myobj = cave.Cave(text=aoc_22.from_text(INPUT_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 2)
        self.assertEqual(myobj.depth, 4002)
        self.assertEqual(myobj.target, 7460005)
        self.assertEqual(myobj.mouth, 0)
        self.assertEqual(len(myobj.regions), 0)

        # 3. Try part one
        self.assertEqual(myobj.part_one(verbose=False), INPUT_ONE_RESULT)
    def test_text_init(self):
        "Test the Grid object creation from text"

        # 1. Create Grid object from text
        myobj = grid.Grid(text=aoc_22.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 32)
        self.assertEqual(len(myobj.nodes), 30)
        self.assertEqual(myobj.max_loc, [5, 4])

        # 3. Check methods
        self.assertEqual(myobj.viable_pairs(), 7)
        print(myobj)
        self.assertEqual(myobj.find_access(), myobj.nodes[(0, 0)])
        self.assertEqual(myobj.find_goal(), myobj.nodes[(5, 0)])
        self.assertEqual(myobj.find_wall(), myobj.nodes[(3, 2)])
        self.assertEqual(myobj.find_empty(), myobj.nodes[(4, 4)])
    def test_text_init(self):
        "Test the Cave object creation from text"

        # 1. Create Cave object from text
        myobj = cave.Cave(text=aoc_22.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 2)
        self.assertEqual(myobj.depth, 510)
        self.assertEqual(myobj.target, 100010)
        self.assertEqual(myobj.mouth, 0)
        self.assertEqual(len(myobj.regions), 0)
        self.assertEqual(myobj.start, None)
        self.assertEqual(myobj.finish, None)
        self.assertEqual(myobj.maxrow, None)
        self.assertEqual(myobj.maxcol, None)

        # 3. Check a couple of regions
        self.assertEqual(myobj.determine_geologic_index(0), 0)
        self.assertEqual(myobj.determine_erosion_level(0), 510)
        self.assertEqual(myobj.determine_region_type(0), cave.ROCKY_TYPE)
        self.assertEqual(myobj.determine_geologic_index(1), 16807)
        self.assertEqual(myobj.determine_erosion_level(1), 17317)
        self.assertEqual(myobj.determine_region_type(1), cave.WET_TYPE)
        self.assertEqual(myobj.determine_geologic_index(cave.ROW_MULT), 48271)
        self.assertEqual(myobj.determine_erosion_level(cave.ROW_MULT), 8415)
        self.assertEqual(myobj.determine_region_type(cave.ROW_MULT),
                         cave.ROCKY_TYPE)
        self.assertEqual(myobj.determine_geologic_index(cave.ROW_MULT + 1),
                         145722555)
        self.assertEqual(myobj.determine_erosion_level(cave.ROW_MULT + 1),
                         1805)
        self.assertEqual(myobj.determine_region_type(cave.ROW_MULT + 1),
                         cave.NARROW_TYPE)
        self.assertEqual(myobj.determine_geologic_index(myobj.target), 0)
        self.assertEqual(myobj.determine_erosion_level(myobj.target), 510)
        self.assertEqual(myobj.determine_region_type(myobj.target),
                         cave.ROCKY_TYPE)