mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-07 21:13:41 +08:00
a82935f326
Integrate onroad views, configurable widgets, local settings, steering-profile contracts, Bluetooth and Android Auto with their device and runtime services. Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Daniel Koepping <elkoled@gmail.com> Co-authored-by: Danny <dannyirwin31@yahoo.com> Co-authored-by: DimitriChrysafis <Dimitri.chrysafis@gmail.com> Co-authored-by: Dom <168790843+firestar5683@users.noreply.github.com> Co-authored-by: Harald Schäfer <harald.the.engineer@gmail.com> Co-authored-by: Prabhaav Pillai <prabhaav@msu.edu> Co-authored-by: Shane Smiskol <shane@smiskol.com> Co-authored-by: dirwin31 <83434411+dirwin31@users.noreply.github.com> Co-authored-by: firestarsdog <229254897+firestarsdog@users.noreply.github.com> Co-authored-by: stef <19478336+stefpi@users.noreply.github.com> Co-authored-by: whoisdomi <dcantu83@gmail.com> Co-authored-by: Intelli <contact@intelli.software> Co-authored-by: pharmacomaniac <blittle65@gmail.com> Co-authored-by: prabhaavp <prabhaav@msu.edu>
53 lines
2.4 KiB
Python
53 lines
2.4 KiB
Python
from contextvars import ContextVar
|
|
from types import SimpleNamespace
|
|
import unittest
|
|
from unittest.mock import Mock
|
|
|
|
from openpilot.starpilot.ui.feature_settings_owner import FeatureSettingsOwner
|
|
from openpilot.starpilot.ui.long_profile_feature import LongProfileFeature
|
|
from openpilot.starpilot.ui.slc_offset_feature import _capability
|
|
|
|
|
|
class ConfigurationLongitudinalTests(unittest.TestCase):
|
|
def test_configuration_capability_does_not_mutate_factory_ownership(self):
|
|
cp = SimpleNamespace(carFingerprint='saved model', openpilotLongitudinalControl=False, pcmCruise=True,
|
|
passive=False, notCar=False, dashcamOnly=False, carVin='')
|
|
before = vars(cp).copy()
|
|
owner = object.__new__(FeatureSettingsOwner)
|
|
owner._snapshot_vehicle = ContextVar("configuration_test_vehicle", default=None)
|
|
owner.vehicle_params = lambda: cp
|
|
enabled = [False]
|
|
owner.configuration_longitudinal = lambda: enabled[0]
|
|
owner.params = Mock()
|
|
feature = LongProfileFeature(owner)
|
|
self.assertFalse(owner.longitudinal_available())
|
|
self.assertIsNone(feature.capability())
|
|
self.assertIsNone(_capability(cp))
|
|
enabled[0] = True
|
|
self.assertTrue(owner.longitudinal_available())
|
|
capability = feature.capability()
|
|
offsets = _capability(cp, True)
|
|
assert capability is not None and offsets is not None
|
|
self.assertEqual(capability[1:3], (True, False))
|
|
self.assertEqual(offsets[1:3], (True, False))
|
|
cp.dashcamOnly = True
|
|
self.assertIsNone(feature.capability())
|
|
self.assertIsNone(_capability(cp, True))
|
|
cp.dashcamOnly = False
|
|
enabled[0] = False
|
|
self.assertIsNone(feature.capability())
|
|
self.assertEqual(vars(cp), before)
|
|
|
|
def test_live_longitudinal_does_not_require_configuration_callback(self):
|
|
cp = SimpleNamespace(carFingerprint='live model', openpilotLongitudinalControl=True, pcmCruise=False,
|
|
passive=False, notCar=False, dashcamOnly=False, carVin='')
|
|
owner = object.__new__(FeatureSettingsOwner)
|
|
owner._snapshot_vehicle = ContextVar("configuration_test_vehicle", default=None)
|
|
owner.vehicle_params = lambda: cp
|
|
owner.configuration_longitudinal = lambda: False
|
|
owner.params = Mock()
|
|
self.assertTrue(owner.longitudinal_available())
|
|
capability = LongProfileFeature(owner).capability()
|
|
assert capability is not None
|
|
self.assertEqual(capability[1:3], (True, False))
|