Example #1
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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)