Source code for day20.tests.test_day20

"""Test day20 main functions."""
import os
import tempfile
from typing import TYPE_CHECKING

from day20.day20 import FILE_A, FILE_B, FILE_PT2, output_files, part1, part2, simulate
from day20.lib.parsers import get_modules

if TYPE_CHECKING:
    from day20.lib.classes import PulseTarget


[docs] def test_day20() -> None: """Test day20 main functions.""" modules = get_modules(FILE_A) assert part1(modules) == 32000000 modules = get_modules(FILE_A) stored_pulses: list[PulseTarget] = [] modules_map = {module.name: module for module in modules} simulate(modules_map, stored_pulses) assert "\n".join(str(pulse) for pulse in stored_pulses) == "\n".join( [ "button -low-> broadcaster", "broadcaster -low-> a", "broadcaster -low-> b", "broadcaster -low-> c", "a -high-> b", "b -high-> c", "c -high-> inv", "inv -low-> a", "a -low-> b", "b -low-> c", "c -low-> inv", "inv -high-> a", ] ) modules = get_modules(FILE_B) assert part1(modules) == 11687500
[docs] def test_part2() -> None: """Test ``part2()``.""" modules = get_modules(FILE_PT2) result, dots = part2(modules, True) assert result == 495 with tempfile.TemporaryDirectory(prefix="unit_test_outputs") as temp_dir: output_files(dots, temp_dir) assert len(os.listdir(temp_dir)) == 16 # run it without exporting. modules = get_modules(FILE_PT2) result, dots = part2(modules, False) assert result == 495 with tempfile.TemporaryDirectory(prefix="unit_test_outputs") as temp_dir: output_files(dots, temp_dir)