mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 13:33:42 +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>
36 lines
1.9 KiB
Python
36 lines
1.9 KiB
Python
import unittest
|
|
|
|
from openpilot.starpilot.ui.conditional_status import ConditionalDisplayProjector
|
|
from openpilot.starpilot.ui.tests.test_conditional_status import DRIVE, NOW, SOURCE, acknowledged
|
|
|
|
|
|
class ConditionalDisplayCadenceTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.projector = ConditionalDisplayProjector()
|
|
|
|
def project(self, ack, *, now=NOW, source=SOURCE, enabled=True, experimental=True):
|
|
return self.projector.project(
|
|
ack, now_ns=now, event_ns=int(ack.conditionalModeAck.observedMonoTime),
|
|
selfdrive_ns=source, drive_id=DRIVE, selfdrive_experimental=experimental,
|
|
selfdrive_enabled=enabled, long_active=True, car_valid=True, system_long=True)
|
|
|
|
def test_independent_sockets_do_not_clear_a_fresh_unchanged_mode(self):
|
|
ack = acknowledged()
|
|
first = self.project(ack)
|
|
self.assertIsNotNone(first)
|
|
for elapsed in (10_000_000, 20_000_000, 40_000_000, 199_000_000):
|
|
self.assertEqual(self.project(ack, now=NOW + elapsed, source=NOW + elapsed - 1_000_000), first)
|
|
self.assertIsNone(self.project(ack, now=NOW + 200_000_001, source=NOW + 199_000_000))
|
|
|
|
def test_newer_state_must_still_match_and_explicit_rejection_wins(self):
|
|
ack = acknowledged()
|
|
self.assertIsNotNone(self.project(ack))
|
|
self.assertIsNone(self.project(ack, now=NOW + 10_000_000, source=NOW + 9_000_000, enabled=False))
|
|
self.assertIsNone(self.project(ack, now=NOW + 10_000_000, source=NOW + 9_000_000, experimental=False))
|
|
self.assertIsNotNone(self.project(ack, source=SOURCE - 1))
|
|
self.assertIsNone(self.project(ack, source=SOURCE - 50_000_001))
|
|
self.assertIsNone(self.project(ack, source=NOW + 1))
|
|
rejected = acknowledged(sequence=2, accepted=False, experimental=False, observed_ns=NOW + 10_000_000)
|
|
self.assertIsNone(self.project(rejected, now=NOW + 10_000_000, source=NOW + 9_000_000, experimental=False))
|
|
self.assertIsNone(self.project(ack, now=NOW + 11_000_000, source=NOW + 10_000_000))
|