advent-of-code/2020-python/tests/test_day_07.py

83 lines
2.9 KiB
Python
Raw Normal View History

2021-11-01 16:40:46 +01:00
import unittest
from solutions.day_07 import Solution
class Day07TestCase(unittest.TestCase):
def setUp(self):
self.solution = Solution()
def test_parse_puzzle_input(self):
data = """
light red bags contain 1 bright white bag, 2 muted yellow bags.
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
dotted black bags contain no other bags.
""".strip()
expected = [
(
"light red",
[
("bright white", 1),
("muted yellow", 2),
],
),
(
"dark orange",
[
("bright white", 3),
("muted yellow", 4),
],
),
("dotted black", []),
]
assert self.solution.parse_input(data) == expected
def test_solve_first_part(self):
data = self.solution.parse_input(
"""
light red bags contain 1 bright white bag, 2 muted yellow bags.
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
bright white bags contain 1 shiny gold bag.
muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
dark olive bags contain 3 faded blue bags, 4 dotted black bags.
vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
faded blue bags contain no other bags.
dotted black bags contain no other bags.
""".strip()
)
assert self.solution.solve(data) == 4
def test_solve_second_part(self):
data_1 = self.solution.parse_input(
"""
light red bags contain 1 bright white bag, 2 muted yellow bags.
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
bright white bags contain 1 shiny gold bag.
muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
dark olive bags contain 3 faded blue bags, 4 dotted black bags.
vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
faded blue bags contain no other bags.
dotted black bags contain no other bags.
""".strip()
)
data_2 = self.solution.parse_input(
"""
shiny gold bags contain 2 dark red bags.
dark red bags contain 2 dark orange bags.
dark orange bags contain 2 dark yellow bags.
dark yellow bags contain 2 dark green bags.
dark green bags contain 2 dark blue bags.
dark blue bags contain 2 dark violet bags.
dark violet bags contain no other bags.
""".strip()
)
assert self.solution.solve_again(data_1) == 32
assert self.solution.solve_again(data_2) == 126
if __name__ == "__main__":
unittest.main()