94 lines
3.0 KiB
Python
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")
|