#!/usr/bin/env python3 from parameterized import parameterized import unittest from cereal import log, messaging from selfdrive.car.car_helpers import can_fingerprint from selfdrive.car.fingerprints import _FINGERPRINTS as FINGERPRINTS class TestCanFingerprint(unittest.TestCase): @parameterized.expand([(c, f) for c, f in FINGERPRINTS.items()]) def test_can_fingerprint(self, car_model, fingerprints): """Tests online fingerprinting function on offline fingerprints""" for fingerprint in fingerprints: # can have multiple fingerprints for each platform can = messaging.new_message('can', 1) can.can = [log.CanData(address=address, dat=b'\x00' * length, src=src) for address, length in fingerprint.items() for src in (0, 1)] fingerprint_iter = iter([can]) empty_can = messaging.new_message('can', 0) car_fingerprint, finger = can_fingerprint(lambda: next(fingerprint_iter, empty_can)) # noqa: B023 self.assertEqual(car_fingerprint, car_model) self.assertEqual(finger[0], fingerprint) self.assertEqual(finger[1], fingerprint) if __name__ == "__main__": unittest.main()