SXXXXXXX_PyMsc/tests/test_widget_integration.py

94 lines
3.0 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Test widget integration with new message structures."""
def test_widget_field_access():
"""Test that widgets can access message fields."""
from pymsc.gui.command_registry import CHECKBOXES, COMBOBOXES
from pymsc.core.message_definitions import msg_a2, msg_b7
print("\nTesting Widget Field Access:")
print("=" * 60)
# Test Checkbox widget data
print("\n1. Checkbox Widgets:")
for cb in CHECKBOXES[:3]: # Test first 3
msg = cb.get('message')
field = cb.get('field')
if msg and field:
try:
value = msg.get_value_for_field(field)
print(f"{cb['label']:20} -> {field:20} = {value}")
except Exception as e:
print(f"{cb['label']:20} -> {field:20} ERROR: {e}")
# Test Combobox widget data
print("\n2. Combobox Widgets:")
for cmb in COMBOBOXES[:3]: # Test first 3
msg = cmb.get('message')
field = cmb.get('field')
if msg and field:
try:
value = msg.get_value_for_field(field)
print(f"{cmb['label']:20} -> {field:20} = {value}")
except Exception as e:
print(f"{cmb['label']:20} -> {field:20} ERROR: {e}")
# Test Tellback fields
print("\n3. Tellback Fields:")
for cb in CHECKBOXES[:3]:
msg_tb = cb.get('message_tb')
field_tb = cb.get('field_tb')
if msg_tb and field_tb:
try:
value = msg_tb.get_value_for_field(field_tb)
print(f"{cb['label']:20} (TB) -> {field_tb:20} = {value}")
except Exception as e:
print(f"{cb['label']:20} (TB) -> {field_tb:20} ERROR: {e}")
print("\n" + "=" * 60)
def test_widget_field_write():
"""Test that widgets can write to message fields."""
from pymsc.core.message_definitions import msg_a2
print("\nTesting Widget Field Write:")
print("=" * 60)
test_fields = [
('stby', 1),
('freeze', 0),
('range_scale', 2),
]
for field, test_value in test_fields:
try:
# Read original
original = msg_a2.get_value_for_field(field)
# Write new value (without actually sending to hardware)
msg_a2._internal_set = True # Flag to prevent actual transmission
# Just test the path resolution
from pymsc.core.field_mappings import get_field_path
path = get_field_path('A2', field)
print(f"{field:20} -> {path:35} (current={original})")
except Exception as e:
print(f"{field:20} ERROR: {e}")
print("\n" + "=" * 60)
if __name__ == '__main__':
print("\n" + "=" * 60)
print("Widget Integration Test")
print("=" * 60)
test_widget_field_access()
test_widget_field_write()
print("\n" + "=" * 60)
print("Widget Integration Tests Complete!")
print("=" * 60 + "\n")