mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-28 10:02:06 +08:00
80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
from openpilot.starpilot.common.experimental_state import (
|
|
CC_STATUS_PARAM,
|
|
CCStatus,
|
|
CE_STATUS_PARAM,
|
|
CEStatus,
|
|
requested_experimental_mode,
|
|
restore_persisted_cc_state,
|
|
)
|
|
|
|
|
|
class FakeParams:
|
|
def __init__(self, bools=None, ints=None):
|
|
self.bools = dict(bools or {})
|
|
self.ints = dict(ints or {})
|
|
|
|
def get_bool(self, key):
|
|
return bool(self.bools.get(key, False))
|
|
|
|
def put_bool(self, key, value):
|
|
self.bools[key] = bool(value)
|
|
|
|
def get_int(self, key, default=0):
|
|
return int(self.ints.get(key, default))
|
|
|
|
def put_int(self, key, value):
|
|
self.ints[key] = int(value)
|
|
|
|
|
|
def test_requested_experimental_mode_defaults_to_experimental_in_ccm_auto():
|
|
params = FakeParams(bools={"ConditionalChill": True})
|
|
params_memory = FakeParams(ints={CC_STATUS_PARAM: CCStatus["OFF"]})
|
|
|
|
assert requested_experimental_mode(params, params_memory) is True
|
|
|
|
|
|
def test_requested_experimental_mode_respects_ccm_manual_override():
|
|
params = FakeParams(bools={"ConditionalChill": True})
|
|
|
|
params_memory = FakeParams(ints={CC_STATUS_PARAM: CCStatus["USER_CHILL"]})
|
|
assert requested_experimental_mode(params, params_memory) is False
|
|
|
|
params_memory = FakeParams(ints={CC_STATUS_PARAM: CCStatus["USER_EXPERIMENTAL"]})
|
|
assert requested_experimental_mode(params, params_memory) is True
|
|
|
|
|
|
def test_requested_experimental_mode_prefers_cem_if_both_conditional_modes_are_enabled():
|
|
params = FakeParams(bools={"ConditionalExperimental": True, "ConditionalChill": True})
|
|
|
|
params_memory = FakeParams(ints={
|
|
CE_STATUS_PARAM: CEStatus["OFF"],
|
|
CC_STATUS_PARAM: CCStatus["USER_EXPERIMENTAL"],
|
|
})
|
|
assert requested_experimental_mode(params, params_memory) is False
|
|
|
|
params_memory = FakeParams(ints={
|
|
CE_STATUS_PARAM: CEStatus["USER_OVERRIDDEN"],
|
|
CC_STATUS_PARAM: CCStatus["USER_CHILL"],
|
|
})
|
|
assert requested_experimental_mode(params, params_memory) is True
|
|
|
|
|
|
def test_requested_experimental_mode_safe_mode_overrides_ccm():
|
|
params = FakeParams(bools={"SafeMode": True, "ConditionalChill": True})
|
|
params_memory = FakeParams(ints={CC_STATUS_PARAM: CCStatus["USER_EXPERIMENTAL"]})
|
|
|
|
assert requested_experimental_mode(params, params_memory) is False
|
|
|
|
|
|
def test_restore_persisted_cc_state_rehydrates_manual_override():
|
|
params = FakeParams(
|
|
bools={"PersistChillState": True},
|
|
ints={"PersistedCCStatus": CCStatus["USER_CHILL"]},
|
|
)
|
|
params_memory = FakeParams(ints={CC_STATUS_PARAM: CCStatus["OFF"]})
|
|
|
|
restored_status = restore_persisted_cc_state(params, params_memory)
|
|
|
|
assert restored_status == CCStatus["USER_CHILL"]
|
|
assert params_memory.get_int(CC_STATUS_PARAM) == CCStatus["USER_CHILL"]
|