|  |  |  | @ -6,7 +6,8 @@ from cereal import car | 
			
		
	
		
			
				
					|  |  |  |  | from openpilot.selfdrive.car.fw_versions import build_fw_dict | 
			
		
	
		
			
				
					|  |  |  |  | from openpilot.selfdrive.car.hyundai.values import CAMERA_SCC_CAR, CANFD_CAR, CAN_GEARS, CAR, CHECKSUM, DATE_FW_ECUS, \ | 
			
		
	
		
			
				
					|  |  |  |  |                                          HYBRID_CAR, EV_CAR, FW_QUERY_CONFIG, FW_VERSIONS, LEGACY_SAFETY_MODE_CAR, \ | 
			
		
	
		
			
				
					|  |  |  |  |                                          UNSUPPORTED_LONGITUDINAL_CAR, PLATFORM_CODE_ECUS, get_platform_codes | 
			
		
	
		
			
				
					|  |  |  |  |                                          UNSUPPORTED_LONGITUDINAL_CAR, PLATFORM_CODE_ECUS, HYUNDAI_VERSION_REQUEST_LONG, \ | 
			
		
	
		
			
				
					|  |  |  |  |                                          get_platform_codes | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | Ecu = car.CarParams.Ecu | 
			
		
	
		
			
				
					|  |  |  |  | ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} | 
			
		
	
	
		
			
				
					|  |  |  | @ -71,6 +72,20 @@ class TestHyundaiFingerprint(unittest.TestCase): | 
			
		
	
		
			
				
					|  |  |  |  |           part = code.split(b"-")[1] | 
			
		
	
		
			
				
					|  |  |  |  |           self.assertFalse(part.startswith(b'CW'), "Car has bad part number") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   def test_correct_ecu_response_database(self): | 
			
		
	
		
			
				
					|  |  |  |  |     """ | 
			
		
	
		
			
				
					|  |  |  |  |     Assert standard responses for certain ECUs, since they can | 
			
		
	
		
			
				
					|  |  |  |  |     respond to multiple queries with different data | 
			
		
	
		
			
				
					|  |  |  |  |     """ | 
			
		
	
		
			
				
					|  |  |  |  |     expected_fw_prefix = HYUNDAI_VERSION_REQUEST_LONG[1:] | 
			
		
	
		
			
				
					|  |  |  |  |     for car_model, ecus in FW_VERSIONS.items(): | 
			
		
	
		
			
				
					|  |  |  |  |       with self.subTest(car_model=car_model): | 
			
		
	
		
			
				
					|  |  |  |  |         for ecu, fws in ecus.items(): | 
			
		
	
		
			
				
					|  |  |  |  |           # TODO: enable for Ecu.fwdRadar, Ecu.abs, Ecu.eps, Ecu.transmission | 
			
		
	
		
			
				
					|  |  |  |  |           if ecu[0] in (Ecu.fwdCamera,): | 
			
		
	
		
			
				
					|  |  |  |  |             self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), | 
			
		
	
		
			
				
					|  |  |  |  |                             f"FW from unexpected request in database: {(ecu, fws)}") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @settings(max_examples=100) | 
			
		
	
		
			
				
					|  |  |  |  |   @given(data=st.data()) | 
			
		
	
		
			
				
					|  |  |  |  |   def test_platform_codes_fuzzy_fw(self, data): | 
			
		
	
	
		
			
				
					|  |  |  | 
 |