Ejemplo n.º 1
0
    def test_part_one(self):
        "Test part one example of Image object"

        # 1. Create Image object from text
        myobj = image.Image(text=aoc_20.from_text(PART_ONE_TEXT))

        # 2. Check the part one result
        self.assertEqual(myobj.part_one(verbose=False), PART_ONE_RESULT)
Ejemplo n.º 2
0
    def test_part_two(self):
        "Test part two example of Image object"

        # 1. Create Image object from text
        myobj = image.Image(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)
Ejemplo n.º 3
0
    def test_part_two(self):
        "Test part two example of Swarm object"

        # 1. Create Spinlock object from text
        myobj = swarm.Swarm(part2=True, text=aoc_20.from_text(PART_TWO_TEXT))

        # 2. Check the part two
        self.assertEqual(myobj.part_two(verbose=True), PART_TWO_RESULT)
Ejemplo n.º 4
0
    def test_part_one(self):
        "Test part one example of Swarm object"

        # 1. Create Spinlock object from text
        myobj = swarm.Swarm(text=aoc_20.from_text(PART_ONE_TEXT))

        # 2. Check the part one result
        self.assertEqual(myobj.part_one(verbose=True), PART_ONE_RESULT)
Ejemplo n.º 5
0
    def test_text_init(self):
        "Test the Image object creation from text"

        # 1. Create Image object from text
        myobj = image.Image(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 99)
        self.assertEqual(myobj.tiles.size, 3)
Ejemplo n.º 6
0
    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])
Ejemplo n.º 7
0
    def test_text_init(self):
        "Test the Fedelf object creation from text"

        # 1. Create Fedelf object from text
        myobj = fedelf.Fedelf(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 1)
        self.assertEqual(myobj.goal, 140)

        # 3. Check mothods
        self.assertEqual(myobj.slow_deliver(), 8)
        self.assertEqual(myobj.fast_deliver(), 8)
        self.assertEqual(myobj.deliver2(), 8)
Ejemplo n.º 8
0
    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'])
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    def test_text_init(self):
        "Test the Tile object creation from text"

        # 1. Create Tile object from text
        myobj = tile.Tile(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 11)
        self.assertEqual(myobj.number, 2311)
        self.assertEqual(len(myobj.lines), 10)
        self.assertEqual(len(myobj.orientations), 8)
        self.assertEqual(len(myobj.borders), 8)
        self.assertEqual(
            myobj.borders[0],
            ['..##.#..#.', '..###..###', '.#####..#.', '...#.##..#'])
Ejemplo n.º 11
0
    def test_text_init(self):
        "Test the Swarm object creation from text"

        # 1. Create Swarm object from text
        myobj = swarm.Swarm(text=aoc_20.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(len(myobj.particles), 2)
        self.assertEqual(myobj.clock, 0)
        self.assertEqual(myobj.particles[0].position, (3, 0, 0))
        self.assertEqual(myobj.particles[0].velocity, (2, 0, 0))
        self.assertEqual(myobj.particles[0].acceleration, (-1, 0, 0))
        self.assertEqual(myobj.particles[1].position, (4, 0, 0))
        self.assertEqual(myobj.particles[1].velocity, (0, 0, 0))
        self.assertEqual(myobj.particles[1].acceleration, (-2, 0, 0))

        # 3. Test methods
        self.assertEqual(myobj.closest(), 0)
        myobj.tick()
        self.assertEqual(myobj.clock, 1)
        self.assertEqual(myobj.particles[0].position, (4, 0, 0))
        self.assertEqual(myobj.particles[0].velocity, (1, 0, 0))
        self.assertEqual(myobj.particles[0].acceleration, (-1, 0, 0))
        self.assertEqual(myobj.particles[1].position, (2, 0, 0))
        self.assertEqual(myobj.particles[1].velocity, (-2, 0, 0))
        self.assertEqual(myobj.particles[1].acceleration, (-2, 0, 0))
        self.assertEqual(myobj.closest(), 1)
        myobj.tick()
        self.assertEqual(myobj.clock, 2)
        self.assertEqual(myobj.particles[0].position, (4, 0, 0))
        self.assertEqual(myobj.particles[0].velocity, (0, 0, 0))
        self.assertEqual(myobj.particles[0].acceleration, (-1, 0, 0))
        self.assertEqual(myobj.particles[1].position, (-2, 0, 0))
        self.assertEqual(myobj.particles[1].velocity, (-4, 0, 0))
        self.assertEqual(myobj.particles[1].acceleration, (-2, 0, 0))
        self.assertEqual(myobj.closest(), 1)
        myobj.tick()
        self.assertEqual(myobj.clock, 3)
        self.assertEqual(myobj.particles[0].position, (3, 0, 0))
        self.assertEqual(myobj.particles[0].velocity, (-1, 0, 0))
        self.assertEqual(myobj.particles[0].acceleration, (-1, 0, 0))
        self.assertEqual(myobj.particles[1].position, (-8, 0, 0))
        self.assertEqual(myobj.particles[1].velocity, (-6, 0, 0))
        self.assertEqual(myobj.particles[1].acceleration, (-2, 0, 0))
        self.assertEqual(myobj.closest(), 0)
Ejemplo n.º 12
0
    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())
Ejemplo n.º 13
0
    def test_text_init(self):
        "Test the Firewall object creation from text"

        # 1. Create Firewall object from text
        myobj = firewall.Firewall(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 3)
        self.assertEqual(len(myobj.ranges), 3)
        self.assertEqual(myobj.ranges[0][0], 0)
        self.assertEqual(myobj.ranges[0][1], 2)
        self.assertEqual(myobj.ranges[1][0], 4)
        self.assertEqual(myobj.ranges[1][1], 7)

        # 3. Check methods
        self.assertEqual(myobj.lowest(), 3)
        self.assertEqual(myobj.count(9), 2)
Ejemplo n.º 14
0
    def test_text_init(self):
        "Test the Image object creation from text"

        # 1. Create Image object from text
        myobj = image.Image(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 16)
        self.assertEqual(len(myobj.algorithm), 512)
        self.assertEqual(len(myobj.pixels), 225)

        # 3. Check methods
        self.assertEqual(myobj.count_light(), 10)

        self.assertEqual(myobj.neighbor((7, 7)), 34)
        self.assertEqual(myobj.next_pixel((7, 7)), '#')

        self.assertEqual(myobj.next_image(1), 24)
        self.assertEqual(myobj.next_image(2), 35)
Ejemplo n.º 15
0
    def test_text_init(self):
        "Test the Tiles object creation from text"

        # 1. Create Tiles object from text
        myobj = tiles.Tiles(text=aoc_20.from_text(EXAMPLE_TEXT))

        # 2. Make sure it has the expected values
        self.assertEqual(myobj.part2, False)
        self.assertEqual(len(myobj.text), 9 * 11)
        self.assertEqual(len(myobj.tiles), 9)
        self.assertEqual(myobj.size, 3)
        self.assertEqual(myobj.grid, None)

        # 3. Test placing tiles into a grid
        myobj.position_tiles()
        self.assertNotEqual(myobj.grid, None)
        numbers = []
        for row in myobj.grid:
            for col in row:
                numbers.append(col[0].number)
        self.assertEqual(numbers, GRID)

        # 4. Test the image
        self.assertEqual(myobj.get_image(), IMAGE)