78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
import importlib.util
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
MODULE_PATH = Path(__file__).resolve().parents[1] / "mici" / "onroad" / "speed_limit_utils.py"
|
|
SPEC = importlib.util.spec_from_file_location("speed_limit_utils_under_test", MODULE_PATH)
|
|
MODULE = importlib.util.module_from_spec(SPEC)
|
|
assert SPEC is not None and SPEC.loader is not None
|
|
SPEC.loader.exec_module(MODULE)
|
|
resolve_display_speed_limit_ms = MODULE.resolve_display_speed_limit_ms
|
|
|
|
|
|
class TestSpeedLimitUtils(unittest.TestCase):
|
|
def test_resolve_display_speed_limit_prefers_slc_target(self):
|
|
speed_limit = resolve_display_speed_limit_ms(
|
|
slc_speed_limit=24.6,
|
|
speed_limit_source="Dashboard",
|
|
source_limits={
|
|
"Dashboard": 22.4,
|
|
"Map Data": 20.1,
|
|
"Vision": 0.0,
|
|
"Mapbox": 0.0,
|
|
},
|
|
primary_priority="Map Data",
|
|
secondary_priority="Dashboard",
|
|
)
|
|
|
|
self.assertEqual(speed_limit, 24.6)
|
|
|
|
def test_resolve_display_speed_limit_uses_active_source_when_display_only(self):
|
|
speed_limit = resolve_display_speed_limit_ms(
|
|
slc_speed_limit=0.0,
|
|
speed_limit_source="Dashboard",
|
|
source_limits={
|
|
"Dashboard": 22.4,
|
|
"Map Data": 20.1,
|
|
"Vision": 0.0,
|
|
"Mapbox": 0.0,
|
|
},
|
|
primary_priority="Map Data",
|
|
secondary_priority="Vision",
|
|
)
|
|
|
|
self.assertEqual(speed_limit, 22.4)
|
|
|
|
def test_resolve_display_speed_limit_honors_priority_order(self):
|
|
speed_limit = resolve_display_speed_limit_ms(
|
|
slc_speed_limit=0.0,
|
|
speed_limit_source="None",
|
|
source_limits={
|
|
"Dashboard": 22.4,
|
|
"Map Data": 20.1,
|
|
"Vision": 24.6,
|
|
"Mapbox": 0.0,
|
|
},
|
|
primary_priority="Map Data",
|
|
secondary_priority="Vision",
|
|
)
|
|
|
|
self.assertEqual(speed_limit, 20.1)
|
|
|
|
def test_resolve_display_speed_limit_falls_back_to_mapbox(self):
|
|
speed_limit = resolve_display_speed_limit_ms(
|
|
slc_speed_limit=0.0,
|
|
speed_limit_source="None",
|
|
source_limits={
|
|
"Dashboard": 0.0,
|
|
"Map Data": 0.0,
|
|
"Vision": 0.0,
|
|
"Mapbox": 17.9,
|
|
},
|
|
primary_priority="Map Data",
|
|
secondary_priority="Dashboard",
|
|
)
|
|
|
|
self.assertEqual(speed_limit, 17.9)
|