Files
StarPilot/starpilot/common/tests/test_starpilot_process.py
T
firestar5683 f351dbac09 Lists A Plenty
2026-06-25 23:26:03 -05:00

121 lines
2.5 KiB
Python

import json
from types import SimpleNamespace
from openpilot.starpilot import starpilot_process
class FakeParams:
def __init__(self):
self.writes = []
def put(self, key, value):
self.writes.append((key, value))
class FakeThreadManager:
def run_with_lock(self, *args, **kwargs):
return None
class FakeThemeManager:
def update_active_theme(self, *args, **kwargs):
return None
class FakeModelManager:
def randomize_selected_model(self):
return None
def test_transition_offroad_skips_invalid_gps_persist():
params = FakeParams()
planner = SimpleNamespace(gps_position={
"latitude": 0.0,
"longitude": 0.0,
"bearing": 0.0,
"speed": 0.0,
"hasFix": False,
"updatedAtMonotonic": 1.0,
"updatedAtSec": 1.0,
})
toggles = SimpleNamespace(lock_doors_timer=0, random_themes=False)
starpilot_process.transition_offroad(
planner,
FakeModelManager(),
FakeThemeManager(),
FakeThreadManager(),
False,
None,
params,
toggles,
)
assert params.writes == []
def test_transition_offroad_skips_missing_gps_persist():
params = FakeParams()
planner = SimpleNamespace(gps_position=None)
toggles = SimpleNamespace(lock_doors_timer=0, random_themes=False)
starpilot_process.transition_offroad(
planner,
FakeModelManager(),
FakeThemeManager(),
FakeThreadManager(),
False,
None,
params,
toggles,
)
assert params.writes == []
def test_transition_offroad_skips_malformed_gps_persist():
params = FakeParams()
planner = SimpleNamespace(gps_position={"hasFix": True})
toggles = SimpleNamespace(lock_doors_timer=0, random_themes=False)
starpilot_process.transition_offroad(
planner,
FakeModelManager(),
FakeThemeManager(),
FakeThreadManager(),
False,
None,
params,
toggles,
)
assert params.writes == []
def test_transition_offroad_persists_valid_gps():
params = FakeParams()
gps_position = {
"latitude": 41.0,
"longitude": -87.0,
"bearing": 90.0,
"speed": 12.0,
"hasFix": True,
"updatedAtMonotonic": 1.0,
"updatedAtSec": 2.0,
}
planner = SimpleNamespace(gps_position=gps_position)
toggles = SimpleNamespace(lock_doors_timer=0, random_themes=False)
starpilot_process.transition_offroad(
planner,
FakeModelManager(),
FakeThemeManager(),
FakeThreadManager(),
False,
None,
params,
toggles,
)
assert params.writes == [("LastGPSPosition", json.dumps(gps_position))]