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))
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)
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)
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)