def test_part_two(self): "Test part two example of Abacus object" # 1. Create Numbers object from text myobj = abacus.Abacus(part2=True, text=aoc_12.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 Navigation object" # 1. Create Navigation object from text myobj = navigation.Navigation(text=aoc_12.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 one example of Abacus object" # 1. Create Numbers object from text myobj = abacus.Abacus(text=aoc_12.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(self): "Test part two example of Pots object" # 1. Create Pots object from text myobj = pots.Pots(part2=True, text=aoc_12.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(999999999370, PART_TWO_RESULT)
def test_text_init(self): "Test the Pots object creation from text" # 1. Create Pots object from text myobj = pots.Pots(text=aoc_12.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 15) self.assertEqual(len(myobj.pots), 65) self.assertEqual(len(myobj.rules.keys()), 14) self.assertEqual(myobj.left, -20) self.assertEqual(myobj.generations, 20) # 3. Checkout the initial sum self.assertEqual(myobj.sum_pots(), 145) # 4. Checkout the next generation self.assertEqual(myobj.next(20), '#') self.assertEqual(myobj.next(21), '.') self.assertEqual(myobj.next(22), '.') self.assertEqual(myobj.next(23), '.') self.assertEqual(myobj.next(24), '#') self.assertEqual(myobj.next(25), '.') # 5. Checkout a couple of generations self.assertEqual(myobj.pots[17:56], '...#..#.#..##......###...###...........') # 0 myobj.pots = myobj.next_generation() self.assertEqual(len(myobj.pots), 65) self.assertEqual(myobj.pots[17:56], '...#...#....#.....#..#..#..#...........') # 1 myobj.pots = myobj.next_generation() self.assertEqual(myobj.pots[17:56], '...##..##...##....#..#..#..##..........') # 2 myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() self.assertEqual(myobj.pots[17:56], '..#.#..#...#.##....##..##..##..##......') # 10 myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() myobj.pots = myobj.next_generation() self.assertEqual(myobj.pots[17:56], '.#....##....#####...#######....#.#..##.') # 20 self.assertEqual(myobj.sum_pots(), 325)
def test_part_two(self): "Test part two example of Navigation object" # 1. Create Navigation object from text myobj = navigation.Navigation(part2=True, text=aoc_12.from_text(PART_TWO_TEXT)) # 2. Check the part two result self.assertEqual(myobj.part_two(verbose=False), PART_TWO_RESULT)
def test_text_init(self): "Test the Navigation object creation from text" # 1. Create Navigation object from text myobj = navigation.Navigation(text=aoc_12.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 5)
def test_two_two(self): "Test the Abacus object creation from text two for part two" # 1. Create Abacus object from text myobj = abacus.Abacus(text=aoc_12.from_text(EXAMPLE_TEXT), part2=True) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, True) self.assertEqual(len(myobj.text), 1) # 3. Check methods self.assertEqual(myobj.find_left_brace('[1,{"c":"red","b":2},3]', 9), 3) self.assertEqual(myobj.find_right_brace('[1,{"c":"red","b":2},3]', 9), 19) self.assertEqual( myobj.find_left_brace('[{"a":1},{"c":"red","b":2},3]', 15), 9) self.assertEqual( myobj.find_right_brace('[{"a":1},{"c":"red","b":2},3]', 3), 7) self.assertEqual( myobj.find_left_brace('[1,{"z":{"a":[1,2]},c:"red","b":2},3]', 23), 3) self.assertEqual( myobj.find_right_brace('[1,{"z":{"a":[1,2]},c:"red","b":2},3]', 5), 33) self.assertEqual(myobj.eliminate_red('[1,2,3]'), '[1,2,3]') self.assertEqual(myobj.eliminate_red('[1,{"c":"red","b":2},3]'), '[1,,3]') self.assertEqual( myobj.eliminate_red('{"d":"red","e":[1,2,3,4],"f":5}'), '') self.assertEqual( myobj.eliminate_red('[{"d":"red","e":[1,2,3,4],"f":5},1]'), '[,1]') self.assertEqual( myobj.eliminate_red( '[{"d":"red","e":[1,2,3,4],"f":5,"g":"red"},1]'), '[,1]') self.assertEqual( myobj.eliminate_red( '{"e":"red","c":2,"a":1,"g":"blue","b":"green","d":"violet","f":170}' ), '') self.assertEqual( myobj.eliminate_red( '[{"d":"red","e":{"a":"red","b":[1,2,3,4]},"f":5,"g":"red"},1]' ), '[,1]') self.assertEqual( myobj.eliminate_red( '[{"d":"tan","e":{"a":"red","b":[1,2,3,4]},"f":5,"g":"red"},1]' ), '[,1]') self.assertEqual( myobj.eliminate_red( '[{"d":"tan","e":{"a":"red","b":[1,2,3,4]},"f":5,"g":"tan"},1]' ), '[{"d":"tan","e":,"f":5,"g":"tan"},1]') self.assertEqual(myobj.eliminate_red('[1,"red",5]'), '[1,"red",5]') self.assertEqual(myobj.total_json(), 4)
def test_text_init(self): """Test pipes creation from test""" # 1. Create default Pipes object mypipes = pipes.Pipes(text=aoc_12.from_text(EXAMPLE_TEXT)) # 2. Make sure it has the specified values self.assertEqual(mypipes.part2, False) self.assertEqual(len(mypipes.connections), 7) self.assertEqual(mypipes.connections[0], [2]) self.assertEqual(mypipes.connections[3], [2, 4]) self.assertEqual(mypipes.connections[5], [6]) # 3. Check methods self.assertEqual(mypipes.num_in_group(0, verbose=False, limit=100), 6)
def test_text_init_one(self): "Test the Caves object creation from text" # 1. Create Caves object from text myobj = caves.Caves(text=aoc_12.from_text(EXAMPLE_ONE)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 7) self.assertEqual(len(myobj.caves), 6) self.assertEqual(len(myobj.caves['start']), 2) self.assertEqual(len(myobj.caves['A']), 4) self.assertEqual(len(myobj.caves['b']), 4) self.assertEqual(myobj.caves['c'], ['A']) self.assertEqual(myobj.caves['d'], ['b']) self.assertEqual(len(myobj.caves['end']), 2) # 3. Check methods self.assertEqual(len(myobj.filter_options([], 'start')), 2) self.assertEqual(len(myobj.filter_options(['A'], 'start')), 2) self.assertEqual(len(myobj.filter_options(['b'], 'start')), 1) self.assertEqual(len(myobj.filter_options(['a', 'b', 'c'], 'start')), 1) self.assertEqual(len(myobj.find_paths('start', 'end')), 10) # 4. Check methods for part 2 myobj.part2 = True self.assertEqual(len(myobj.small_caves()), 3) self.assertEqual(myobj.times_occurs([], 'b'), 0) self.assertEqual(myobj.times_occurs(['b'], 'b'), 1) self.assertEqual(myobj.times_occurs(['A', 'b', 'C'], 'b'), 1) self.assertEqual(myobj.times_occurs(['A', 'b', 'C', 'b', 'D'], 'b'), 2) self.assertEqual(len(myobj.filter_options([], 'start')), 2) self.assertEqual(len(myobj.filter_options([], 'start', twice='')), 2) self.assertEqual(len(myobj.filter_options([], 'start', twice='x')), 2) self.assertEqual(len(myobj.filter_options(['b'], 'start', twice='d')), 1) self.assertEqual(len(myobj.filter_options(['b'], 'start', twice='b')), 2) self.assertEqual(len(myobj.filter_options(['b'], 'start', twice='d')), 1) self.assertEqual(len(myobj.find_paths('start', 'end')), 36)
def test_text_init_three(self): "Test the Caves object creation from text using example three" # 1. Create Caves object from text myobj = caves.Caves(text=aoc_12.from_text(EXAMPLE_THREE)) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, False) self.assertEqual(len(myobj.text), 18) self.assertEqual(len(myobj.caves), 10) # 3. Check methods self.assertEqual(len(myobj.find_paths('start', 'end')), 226) self.assertEqual(len(myobj.small_caves()), 5) # 4. Check methods for part 2 myobj.part2 = True self.assertEqual(len(myobj.find_paths('start', 'end')), 3509)
def test_text_two(self): "Test the Abacus object creation from text for part two" # 1. Create Abacus object from text myobj = abacus.Abacus(text=aoc_12.from_text(EXAMPLE_TEXT), part2=True) # 2. Make sure it has the expected values self.assertEqual(myobj.part2, True) self.assertEqual(len(myobj.text), 1) # 3. Check methods self.assertEqual(myobj.total_line('[1,2,3]'), 6) self.assertEqual(myobj.total_line('{"a":2,"b":4}'), 6) self.assertEqual(myobj.total_line('[[[3]]]'), 3) self.assertEqual(myobj.total_line('{"a":{"b":4},"c":-1}'), 3) self.assertEqual(myobj.total_line('{"a":[-1,1]}'), 0) self.assertEqual(myobj.total_line('[-1,{"a":1}]'), 0) self.assertEqual(myobj.total_line('[]'), 0) self.assertEqual(myobj.total_line('{}'), 0) self.assertEqual(myobj.total_json(), 4)