Source code for day20.tests.test_classes

"""Tests for day20 classes."""
from day20.lib.classes import BroadcastModule, LoopCounter, Pulse, SinkModule


[docs] def test_modules() -> None: """Ensure that sink/broadcast module are always in default state.""" sink: SinkModule = SinkModule("rx", []) assert sink.is_initial_state() broadcast: BroadcastModule = BroadcastModule("broadcast", ["sink"]) assert broadcast.is_initial_state() broadcast.handle_pulse("button", Pulse.LOW) assert broadcast.is_initial_state() sink.handle_pulse("broadcast", Pulse.LOW) assert sink.is_initial_state()
[docs] def test_loop_counter() -> None: """Test ``LoopCounter`` class.""" loop_counter: LoopCounter = LoopCounter(4) loop_counter.add_result("loop1", 4) loop_counter.add_result("loop1", 6) loop_counter.add_result("loop1", 8) assert not loop_counter.finished loop_counter.add_result("loop2", 9) assert not loop_counter.finished loop_counter.add_result("loop3", 10) assert not loop_counter.finished loop_counter.add_result("loop4", 15) assert loop_counter.finished assert loop_counter.loop_lengths == { "loop1": 4, "loop2": 9, "loop3": 10, "loop4": 15, }