67 lines
2.7 KiB
Python
67 lines
2.7 KiB
Python
"""
|
|
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos/
|
|
|
|
The BIG (tici/tizi) and SMALL (mici) onroad source indicators share one
|
|
resolver (comma PR #38492 states, backend-aware label). Pin its truth table.
|
|
"""
|
|
from iqpilot.ui.onroad.big_model_status import SourceState, resolve_source
|
|
|
|
|
|
class _FakeParams:
|
|
def __init__(self, **flags):
|
|
self._flags = flags
|
|
|
|
def get_bool(self, key: str) -> bool:
|
|
return bool(self._flags.get(key, False))
|
|
|
|
|
|
def _resolve(engaged=False, **flags):
|
|
return resolve_source(_FakeParams(**flags), engaged)
|
|
|
|
|
|
def test_no_backend_enabled_is_hidden():
|
|
assert _resolve() == ("", SourceState.HIDDEN)
|
|
|
|
|
|
def test_emac_label_is_mac():
|
|
label, _ = _resolve(IQEmacEnabled=True, MacModelReachable=True, MacModelActive=True)
|
|
assert label == "MAC"
|
|
|
|
|
|
def test_egpu_label_is_gpu():
|
|
label, _ = _resolve(IQEgpuEnabled=True, UsbGpuPresent=True, UsbGpuActive=True)
|
|
assert label == "GPU"
|
|
|
|
|
|
def test_emac_wins_when_both_enabled():
|
|
label, _ = _resolve(IQEmacEnabled=True, IQEgpuEnabled=True,
|
|
MacModelReachable=True, UsbGpuPresent=True)
|
|
assert label == "MAC"
|
|
|
|
|
|
def test_egpu_states_mirror_emac():
|
|
assert _resolve(IQEgpuEnabled=True)[1] == SourceState.HIDDEN # not present
|
|
assert _resolve(IQEgpuEnabled=True, UsbGpuPresent=True)[1] == SourceState.LOADING
|
|
assert _resolve(IQEgpuEnabled=True, UsbGpuPresent=True, UsbGpuActive=True)[1] == SourceState.ACTIVE
|
|
assert _resolve(IQEgpuEnabled=True, UsbGpuPresent=True, UsbGpuFailed=True)[1] == SourceState.FAILED
|
|
assert _resolve(engaged=True, IQEgpuEnabled=True, UsbGpuPresent=True,
|
|
UsbGpuFailed=True)[1] == SourceState.CROSSED
|
|
|
|
|
|
def test_emac_states():
|
|
assert _resolve(IQEmacEnabled=True)[1] == SourceState.HIDDEN # unreachable
|
|
assert _resolve(IQEmacEnabled=True, MacModelReachable=True)[1] == SourceState.LOADING
|
|
assert _resolve(IQEmacEnabled=True, MacModelReachable=True, MacModelActive=True)[1] == SourceState.ACTIVE
|
|
assert _resolve(IQEmacEnabled=True, MacModelReachable=True, MacModelFailed=True)[1] == SourceState.FAILED
|
|
# engaged on small because big failed -> crossed
|
|
assert _resolve(engaged=True, IQEmacEnabled=True, MacModelReachable=True,
|
|
MacModelFailed=True)[1] == SourceState.CROSSED
|
|
# active always wins over a stale failed flag
|
|
assert _resolve(IQEmacEnabled=True, MacModelReachable=True,
|
|
MacModelActive=True, MacModelFailed=True)[1] == SourceState.ACTIVE
|
|
|
|
|
|
def test_failed_but_disconnected_is_hidden():
|
|
# unplugged mid-drive: nothing to show, not a red/orange "failed"
|
|
assert _resolve(IQEmacEnabled=True, MacModelReachable=False, MacModelFailed=True)[1] == SourceState.HIDDEN
|