mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-08-22 02:29:51 +00:00
84 lines
4.2 KiB
Python
84 lines
4.2 KiB
Python
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
CORE_H = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileDownloader.h"
|
|
CORE_CPP = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileDownloader.cpp"
|
|
ADAPTER_H = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.h"
|
|
ADAPTER_CPP = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp"
|
|
MAP_SCREEN = ROOT / "lib/tdeck_ui/UI/LXMF/MapScreen.cpp"
|
|
SETTINGS = ROOT / "lib/tdeck_ui/UI/LXMF/SettingsScreen.cpp"
|
|
SETTINGS_H = ROOT / "lib/tdeck_ui/UI/LXMF/SettingsScreen.h"
|
|
UI_MANAGER = ROOT / "lib/tdeck_ui/UI/LXMF/UIManager.cpp"
|
|
MAIN = ROOT / "src/main.cpp"
|
|
|
|
|
|
def test_portable_core_is_bounded_and_allocation_free():
|
|
source = CORE_H.read_text() + CORE_CPP.read_text()
|
|
for forbidden in ("std::vector", "std::map", "std::string", "new ", "malloc(", "LittleFS", "SD.begin", "format("):
|
|
assert forbidden not in source
|
|
assert "QUEUE_CAPACITY = 6U" in source
|
|
assert "RESULT_CAPACITY = 6U" in source
|
|
assert "CHUNK_CAPACITY = 4096U" in source
|
|
assert "URL_CAPACITY" in source
|
|
assert "TileKey" in source
|
|
assert "tile.openstreetmap.org" in source
|
|
assert "OpenStreetMap" in source and "attribution" in source.lower()
|
|
|
|
|
|
def test_https_adapter_verifies_peer_with_explicit_ca_and_has_no_credentials():
|
|
source = ADAPTER_H.read_text() + ADAPTER_CPP.read_text()
|
|
assert "WiFiClientSecure" in source
|
|
assert "setCACert" in source
|
|
assert "setInsecure" not in source
|
|
assert "setConnectTimeout" in source
|
|
assert "setTimeout" in source
|
|
for forbidden in ("Authorization", "Cookie", "username", "password", "SD.begin", "format(", "LittleFS"):
|
|
assert forbidden not in source
|
|
|
|
|
|
def test_downloader_is_explicitly_opt_in_and_wired_only_for_visible_misses():
|
|
screen = MAP_SCREEN.read_text()
|
|
settings = SETTINGS.read_text()
|
|
assert "downloadTile(request)" in screen
|
|
assert "downloader_.enqueue(request.key, request.frame_epoch)" in screen
|
|
assert "presenter_.frameEpoch() != request.frame_epoch" in screen
|
|
assert 'KEY_MAP_DOWNLOAD = "map_dl"' in settings
|
|
assert "prefs.getBool(KEY_MAP_DOWNLOAD, false)" in settings
|
|
assert "Download map tiles:" in settings
|
|
|
|
|
|
def test_settings_save_defers_persistence_and_application_outside_lvgl():
|
|
settings = SETTINGS.read_text()
|
|
capture = settings[settings.index("void SettingsScreen::save_settings()"):
|
|
settings.index("void SettingsScreen::service_pending_save()")]
|
|
service = settings[settings.index("void SettingsScreen::service_pending_save()"):
|
|
settings.index("void SettingsScreen::update_ui_from_settings()")]
|
|
assert "Preferences" not in capture
|
|
assert "_save_callback" not in capture
|
|
assert "Preferences prefs" in service
|
|
assert "_save_callback(settings)" in service
|
|
assert "SAVE_APPLY_RETRY" in SETTINGS_H.read_text()
|
|
assert "applied ? SAVE_IDLE : SAVE_APPLY_RETRY" in service
|
|
assert "millis() - _apply_retry_at_ms" in service
|
|
assert "_apply_retry_at_ms = millis() + 1000U" in service
|
|
|
|
main = MAIN.read_text()
|
|
callback = main[main.index("settings->set_save_callback"):
|
|
main.index("// Apply initial brightness", main.index("settings->set_save_callback"))]
|
|
assert "-> bool" in callback
|
|
assert "return false" in callback
|
|
assert "return true" in callback
|
|
assert callback.count("RouterLock router_lock") == 1
|
|
assert "if (!ble_mem)" in callback
|
|
assert callback.index("app_settings = new_settings") > callback.index("Failed to start BLE interface")
|
|
assert callback.count("return false") >= 5
|
|
assert "if (!tcp_interface_impl->start())" in callback
|
|
assert callback.index("app_settings.tcp_enabled = new_settings.tcp_enabled") < callback.index("Failed to start LoRa interface")
|
|
assert callback.index("app_settings.lora_enabled = new_settings.lora_enabled") < callback.index("Failed to start AutoInterface")
|
|
assert callback.index("app_settings.auto_enabled = new_settings.auto_enabled") < callback.index("Failed to start BLE interface")
|
|
|
|
update = UI_MANAGER.read_text()
|
|
body = update[update.index("void UIManager::update()"):
|
|
update.index("void UIManager::refresh_current_screen()")]
|
|
assert body.index("service_pending_save()") < body.index("LVGL_LOCK")
|