def test_part_two(self): "Test part two example of Rooms object" # 1. Create Rooms object from text myobj = rooms.Rooms(part2=True, text=aoc_20.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 Rooms object" # 1. Create Rooms object from text myobj = rooms.Rooms(text=aoc_20.from_text(PART_ONE_TEXT)) # 2. Check the part one result self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
def test_empty_init(self): "Test the default Rooms creation" # 1. Create default Rooms object myobj = rooms.Rooms() # 2. Make sure it has the default values self.assertEqual(myobj.part2, False) self.assertEqual(myobj.text, None) self.assertEqual(myobj.regex, None) self.assertEqual(myobj.doors, None)
def test_value_init(self): "Test the Node object creation with location and doors" # 1. Create Node object from values myrooms = rooms.Rooms(text=aoc_20.from_text(EXAMPLE_ONE_TEXT)) myobj = path.Node(location=rooms.START, doors=myrooms.doors) # 2. Make sure it has the expected values self.assertEqual(myobj.location, rooms.START) self.assertEqual(myobj.previous, None) self.assertEqual(myobj.doors, myrooms.doors) self.assertEqual(myobj.steps, 0) self.assertEqual(myobj.adjacent, [None, None, None, -1])
def part_two(args, input_lines): "Process part two of the puzzle" # 1. Create the puzzle solver solver = rooms.Rooms(part2=True, text=input_lines) # 2. Determine the solution for part two solution = solver.part_two(verbose=args.verbose, limit=args.limit) if solution is None: print("There is no solution") else: print("The solution for part two is %s" % (solution)) # 3. Return result return solution is not None
def test_examples(self): "Test all of the examples" # 1. Loop for all of the examples for example in EXAMPLES: # 2. Created the Rooms object from text myobj = rooms.Rooms(text=aoc_20.from_text(example['text'])) self.assertEqual(myobj.regex, example['text'].strip()) # 3. Check the map self.assertEqual(str(myobj), example['str'].strip()) # 4. Check the doors mypath = path.Path(start=rooms.START, doors=myobj.doors) self.assertEqual(mypath.furthest(), example['doors'])
def test_value_init(self): "Test the Path object creation with values" # 1. Create Node object from values myrooms = rooms.Rooms(text=aoc_20.from_text(EXAMPLE_ONE_TEXT)) myobj = path.Path(start=rooms.START, doors=myrooms.doors) # 2. Make sure it has the expected values self.assertEqual(myobj.start, rooms.START) self.assertEqual(myobj.doors, myrooms.doors) self.assertNotEqual(myobj.node, None) self.assertEqual(myobj.node.location, myobj.start) self.assertEqual(myobj.node.doors, myrooms.doors) self.assertTrue(myobj.nodes, 4) self.assertEqual(len(myobj.queue), 0) self.assertEqual(myobj.furthest(), EXAMPLE_ONE_DOORS)
def test_example_two(self): "Test the Rooms object creation from text" # 1. Create Rooms object from text myobj = rooms.Rooms(text=aoc_20.from_text(EXAMPLE_TWO_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 1) self.assertEqual(myobj.regex, EXAMPLE_TWO_TEXT.strip()) self.assertEqual(len(myobj.doors), 15 * 2) dims = myobj.dimensions() self.assertEqual(dims['N'], -2) self.assertEqual(dims['S'], 1) self.assertEqual(dims['E'], 1) self.assertEqual(dims['W'], -2) self.assertEqual(str(myobj), EXAMPLE_TWO_STR.strip())