diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index c7139b4a1b..9d7d077431 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -3,7 +3,7 @@ from collections import defaultdict import unittest from cereal import car -from selfdrive.car.hyundai.values import CAR, CANFD_CAR, FW_QUERY_CONFIG, FW_VERSIONS, CAN_GEARS, LEGACY_SAFETY_MODE_CAR, CHECKSUM, CAMERA_SCC_CAR +from selfdrive.car.hyundai.values import CAR, CANFD_CAR, FW_QUERY_CONFIG, FW_VERSIONS, CAN_GEARS, LEGACY_SAFETY_MODE_CAR, CHECKSUM, CAMERA_SCC_CAR, PLATFORM_CODE_PATTERN Ecu = car.CarParams.Ecu ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} @@ -34,6 +34,18 @@ class TestHyundaiFingerprint(unittest.TestCase): raise unittest.SkipTest self.assertIn(fuzzy_ecu, [e[0] for e in ecus]) + def test_fws_for_platform_codes(self): + # Tests platform code behavior in the FW versions + for car_model, ecus in FW_VERSIONS.items(): + with self.subTest(car_model=car_model): + for ecu, fws in ecus.items(): + if ecu[0] in FW_QUERY_CONFIG.fuzzy_ecus: + # some newer CAN FD cars have date codes in a different format we don't yet parse, + # for now assert date format is consistent across the platform + # TODO: use FW_QUERY_CONFIG.fuzzy_get_platform_codes + has_date = {PLATFORM_CODE_PATTERN.search(fw).groups(1) is None for fw in fws} + self.assertEqual(len(has_date), 1) + def test_fuzzy_platform_codes(self): codes = FW_QUERY_CONFIG.fuzzy_get_platform_codes([b'\xf1\x00DH LKAS 1.1 -150210']) self.assertEqual(codes, {b"DH"})