82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
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()
|