IQ.Pilot Release Commit @ 0798119
This commit is contained in:
117
selfdrive/car/tests/test_car_specific_events.py
Normal file
117
selfdrive/car/tests/test_car_specific_events.py
Normal file
@@ -0,0 +1,117 @@
|
||||
from types import SimpleNamespace
|
||||
|
||||
from cereal import log
|
||||
from iqdbc.car import structs
|
||||
|
||||
from openpilot.selfdrive.car.car_specific import CarSpecificEvents
|
||||
|
||||
EventName = log.OnroadEvent.EventName
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
|
||||
|
||||
def make_car_state(**overrides):
|
||||
base = dict(
|
||||
doorOpen=False,
|
||||
seatbeltUnlatched=False,
|
||||
gearShifter=GearShifter.drive,
|
||||
cruiseState=SimpleNamespace(available=True, enabled=False, nonAdaptive=False),
|
||||
cruiseFaultLateralMode=False,
|
||||
espDisabled=False,
|
||||
espActive=False,
|
||||
stockFcw=False,
|
||||
stockAeb=False,
|
||||
stockLkas=False,
|
||||
vEgo=15.0,
|
||||
brakeHoldActive=False,
|
||||
parkingBrake=False,
|
||||
accFaulted=False,
|
||||
steeringPressed=False,
|
||||
steeringDisengage=False,
|
||||
brakePressed=False,
|
||||
standstill=False,
|
||||
gasPressed=False,
|
||||
vehicleSensorsInvalid=False,
|
||||
invalidLkasSetting=False,
|
||||
lowSpeedAlert=False,
|
||||
buttonEnable=False,
|
||||
buttonEvents=[],
|
||||
steerFaultTemporary=False,
|
||||
steerFaultPermanent=False,
|
||||
blockPcmEnable=False,
|
||||
)
|
||||
base.update(overrides)
|
||||
return SimpleNamespace(**base)
|
||||
|
||||
|
||||
def test_pcm_disable_suppressed_during_cruise_fault_lateral_mode():
|
||||
cp = SimpleNamespace(
|
||||
brand="volkswagen",
|
||||
openpilotLongitudinalControl=False,
|
||||
minEnableSpeed=0.0,
|
||||
pcmCruise=True,
|
||||
carFingerprint="MOCK",
|
||||
)
|
||||
events = CarSpecificEvents(cp)
|
||||
|
||||
cs = make_car_state(cruiseFaultLateralMode=True)
|
||||
cs_prev = make_car_state(cruiseState=SimpleNamespace(available=True, enabled=True, nonAdaptive=False))
|
||||
|
||||
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
||||
|
||||
assert not out.has(EventName.pcmDisable)
|
||||
|
||||
|
||||
def test_cruise_fault_lateral_mode_replaces_acc_faulted_alert():
|
||||
cp = SimpleNamespace(
|
||||
brand="volkswagen",
|
||||
openpilotLongitudinalControl=False,
|
||||
minEnableSpeed=0.0,
|
||||
pcmCruise=True,
|
||||
carFingerprint="MOCK",
|
||||
)
|
||||
events = CarSpecificEvents(cp)
|
||||
|
||||
cs = make_car_state(accFaulted=True, cruiseFaultLateralMode=True)
|
||||
cs_prev = make_car_state()
|
||||
|
||||
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
||||
|
||||
assert out.has(EventName.cruiseFaultLateralAllowed)
|
||||
assert not out.has(EventName.accFaulted)
|
||||
|
||||
|
||||
def test_acc_faulted_still_emitted_without_cruise_fault_lateral_mode():
|
||||
cp = SimpleNamespace(
|
||||
brand="volkswagen",
|
||||
openpilotLongitudinalControl=False,
|
||||
minEnableSpeed=0.0,
|
||||
pcmCruise=True,
|
||||
carFingerprint="MOCK",
|
||||
)
|
||||
events = CarSpecificEvents(cp)
|
||||
|
||||
cs = make_car_state(accFaulted=True)
|
||||
cs_prev = make_car_state()
|
||||
|
||||
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
||||
|
||||
assert out.has(EventName.accFaulted)
|
||||
assert not out.has(EventName.cruiseFaultLateralAllowed)
|
||||
|
||||
|
||||
def test_pcm_disable_still_emitted_without_cruise_fault_lateral_mode():
|
||||
cp = SimpleNamespace(
|
||||
brand="volkswagen",
|
||||
openpilotLongitudinalControl=False,
|
||||
minEnableSpeed=0.0,
|
||||
pcmCruise=True,
|
||||
carFingerprint="MOCK",
|
||||
)
|
||||
events = CarSpecificEvents(cp)
|
||||
|
||||
cs = make_car_state()
|
||||
cs_prev = make_car_state(cruiseState=SimpleNamespace(available=True, enabled=True, nonAdaptive=False))
|
||||
|
||||
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
||||
|
||||
assert out.has(EventName.pcmDisable)
|
||||
Reference in New Issue
Block a user