1
0
Files
h8-536-decoder/tests/test_panel_selectors.py
2026-05-28 10:12:08 +10:00

70 lines
2.7 KiB
Python

import unittest
from h8536.panel_selectors import (
CURRENT_TABLE_BASE,
describe_selector_value,
known_panel_selector,
panel_selector_semantics_payload,
selector_word_address,
)
class PanelSelectorSemanticsTest(unittest.TestCase):
def test_selector_0013_maps_to_current_table_word_and_lamp_bits(self):
item = known_panel_selector(0x0013)
self.assertIsNotNone(item)
assert item is not None
self.assertEqual(item["current_word_address_hex"], "H'E826")
self.assertEqual(selector_word_address(CURRENT_TABLE_BASE, 0x0013), 0xE826)
text = " ".join(describe_selector_value(0x0013, 0x4000))
self.assertIn("IRIS/M.BLACK LINK", text)
self.assertIn("F791.5", text)
self.assertIn("F716.7", text)
def test_selector_payload_includes_local_panel_toggle_source(self):
by_selector = {
int(item["selector"]): item
for item in panel_selector_semantics_payload()
}
selector_0013 = by_selector[0x0013]
trigger_text = " ".join(
str(trigger.get("summary", ""))
for trigger in selector_0013.get("local_triggers", [])
)
self.assertIn("F6DB.7", trigger_text)
self.assertIn("H'E826", trigger_text)
trigger_names = " ".join(
str(trigger.get("name_candidate", ""))
for trigger in selector_0013.get("local_triggers", [])
)
self.assertIn("provisional_iris_mblack_link_button_toggle_report", trigger_names)
def test_selector_payload_includes_closed_loop_state_machine(self):
item = known_panel_selector(0x0013)
self.assertIsNotNone(item)
assert item is not None
state_machine = item["state_machine"]
self.assertEqual(state_machine["name_candidate"], "iris_mblack_link_closed_loop_state_candidate")
self.assertEqual(state_machine["ack_frame"], "05 00 13 00 00 4C")
self.assertEqual(state_machine["active_mirror_frame"], "00 00 13 40 00 09")
self.assertEqual(state_machine["clear_mirror_frame"], "00 00 13 00 00 49")
def test_rom_button_output_sweep_meanings_are_available(self):
monitor_text = " ".join(describe_selector_value(0x001A, 0x4040))
standard_text = " ".join(describe_selector_value(0x006B, 0x8000))
shutter_text = " ".join(describe_selector_value(0x008F, 0x2000))
white_balance_text = " ".join(describe_selector_value(0x0093, 0x8040))
self.assertIn("MONITOR G", monitor_text)
self.assertIn("STANDARD", standard_text)
self.assertIn("shutter 00.0", shutter_text)
self.assertIn("white-balance PRESET", white_balance_text)
if __name__ == "__main__":
unittest.main()