70 lines
2.7 KiB
Python
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()
|