From 3524cc7f0bbb94ccb4d6b7b0504692d23288a05f Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Sun, 13 Nov 2022 16:15:17 -0800 Subject: [PATCH] cruise speed tests: match controlsd initialization of cruise speed (#26491) * helper functions and fix resetting/enabling * comment (resume not yet tested) * make it clear how this resets * this is fine to enable once * same here --- selfdrive/controls/tests/test_cruise_speed.py | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/selfdrive/controls/tests/test_cruise_speed.py b/selfdrive/controls/tests/test_cruise_speed.py index 72b7dddc20..396ff2b46f 100755 --- a/selfdrive/controls/tests/test_cruise_speed.py +++ b/selfdrive/controls/tests/test_cruise_speed.py @@ -5,6 +5,7 @@ import unittest from selfdrive.controls.lib.drive_helpers import VCruiseHelper, V_CRUISE_MAX, V_CRUISE_ENABLE_MIN from cereal import car +from common.conversions import Conversions as CV from common.params import Params from selfdrive.test.longitudinal_maneuvers.maneuver import Maneuver @@ -47,40 +48,48 @@ class TestVCruiseHelper(unittest.TestCase): def setUp(self): self.CP = car.CarParams(pcmCruise=self.pcm_cruise) # pylint: disable=E1101 self.v_cruise_helper = VCruiseHelper(self.CP) + self.reset_cruise_speed_state() + + def reset_cruise_speed_state(self): + # Two resets previous cruise speed + for _ in range(2): + self.v_cruise_helper.update_v_cruise(car.CarState(cruiseState={"available": False}), enabled=False, is_metric=False) + + def enable(self, v_ego): + # Simulates user pressing set with a current speed + self.v_cruise_helper.initialize_v_cruise(car.CarState(vEgo=v_ego)) def test_adjust_speed(self): """ Asserts speed changes on falling edges of buttons. """ - self.v_cruise_helper.initialize_v_cruise(car.CarState()) + self.enable(V_CRUISE_ENABLE_MIN * CV.KPH_TO_MS) for btn in (ButtonType.accelCruise, ButtonType.decelCruise): - initial_v_cruise = self.v_cruise_helper.v_cruise_kph for pressed in (True, False): CS = car.CarState(cruiseState={"available": True}) CS.buttonEvents = [ButtonEvent(type=btn, pressed=pressed)] self.v_cruise_helper.update_v_cruise(CS, enabled=True, is_metric=False) - self.assertEqual(pressed, (initial_v_cruise == self.v_cruise_helper.v_cruise_kph)) + self.assertEqual(pressed, self.v_cruise_helper.v_cruise_kph == self.v_cruise_helper.v_cruise_kph_last) def test_resume_in_standstill(self): """ Asserts we don't increment set speed if user presses resume/accel to exit cruise standstill. """ - self.v_cruise_helper.initialize_v_cruise(car.CarState()) - initial_v_cruise = self.v_cruise_helper.v_cruise_kph + self.enable(0) for standstill in (True, False): for pressed in (True, False): CS = car.CarState(cruiseState={"available": True, "standstill": standstill}) CS.buttonEvents = [ButtonEvent(type=ButtonType.accelCruise, pressed=pressed)] - self.v_cruise_helper.update_v_cruise(CS, enabled=True, is_metric=False) + # speed should only update if not at standstill and button falling edge should_equal = standstill or pressed - self.assertEqual(should_equal, (initial_v_cruise == self.v_cruise_helper.v_cruise_kph)) + self.assertEqual(should_equal, self.v_cruise_helper.v_cruise_kph == self.v_cruise_helper.v_cruise_kph_last) def test_initialize_v_cruise(self): """ @@ -88,7 +97,10 @@ class TestVCruiseHelper(unittest.TestCase): """ for v_ego in np.linspace(0, 100, 101): - self.v_cruise_helper.initialize_v_cruise(car.CarState(vEgo=float(v_ego))) + self.reset_cruise_speed_state() + self.assertFalse(self.v_cruise_helper.v_cruise_initialized) + + self.enable(float(v_ego)) self.assertTrue(V_CRUISE_ENABLE_MIN <= self.v_cruise_helper.v_cruise_kph <= V_CRUISE_MAX) self.assertTrue(self.v_cruise_helper.v_cruise_initialized)