from opendbc.car.rivian.fingerprints import FW_VERSIONS from opendbc.car.rivian.values import CAR, FW_QUERY_CONFIG, WMI, ModelLine, ModelYear class TestRivian: def test_custom_fuzzy_fingerprinting(self, subtests): for platform in CAR: with subtests.test(platform=platform.name): for wmi in WMI: for line in ModelLine: for year in ModelYear: for bad in (True, False): vin = ["0"] * 17 vin[:3] = wmi vin[3] = line.value vin[9] = year.value if bad: vin[3] = "Z" vin = "".join(vin) matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy({}, vin, FW_VERSIONS) should_match = year != ModelYear.S_2025 and not bad assert (matches == {platform}) == should_match, "Bad match"