Files
overland-controller/tests/test_dashboard_source_contract.py
T

53 lines
2.1 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
DASHBOARD = ROOT / "firmware" / "esp32-s3-dashboard" / "esp32-s3-dashboard.ino"
SENSOR_NODE_RECEIVER = ROOT / "firmware" / "esp32-s3-dashboard" / "sensor_node_receiver.cpp"
def test_setup_done_button_event_is_handled():
source = DASHBOARD.read_text()
callback_start = source.index("static void setup_keyboard_event_cb")
callback_end = source.index("static void setup_textarea_event_cb", callback_start)
callback = source[callback_start:callback_end]
assert "LV_EVENT_CLICKED" in callback
assert "lv_obj_add_flag(setup_keyboard, LV_OBJ_FLAG_HIDDEN);" in callback
assert "lv_obj_add_event_cb(done_button, setup_keyboard_event_cb, LV_EVENT_CLICKED" in source
def test_dashboard_can_is_passive_and_logs_changed_frames():
source = DASHBOARD.read_text()
assert "TWAI_MODE_LISTEN_ONLY" in source
assert "twai_transmit(" not in source
assert "log_changed_can_frame(message);" in source
assert 'Serial.print("CAN,");' in source
assert 'can_serial_command.startsWith("TEMP,")' in source
assert 'can_serial_command.startsWith("MARK,")' in source
assert 'Serial.print("MARK,");' in source
def test_dashboard_receives_sensor_node_rs485_for_diagnostics():
dashboard = DASHBOARD.read_text()
receiver = SENSOR_NODE_RECEIVER.read_text()
assert "initSensorNodeRs485();" in dashboard
assert "processSensorNodeRs485();" in dashboard
assert "Sensor Node RS485" in dashboard
assert "sensorNodeRs485Connected()" in dashboard
assert "SENSOR_NODE_RS485_RX_PIN = 43" in receiver
assert "SENSOR_NODE_RS485_TX_PIN = 44" in receiver
assert "SENSOR_NODE_RS485_BAUD = 115200" in receiver
assert 'strcmp(type, "sensor_status")' in receiver
assert 'doc["frame_sequence"]' in receiver
assert "framesDropped" in receiver
assert 'imu["yaw_degrees"]' in receiver
assert 'gps["altitude_meters"]' in receiver
assert 'JsonObject utc = gps["utc"]' in receiver
assert r'text += "\n Yaw: "' in dashboard
assert r'text += "\n Altitude: "' in dashboard
assert r'text += "\n UTC: "' in dashboard