import  unittest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  random 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								from  selfdrive . can . tests . packer_old  import  CANPacker  as  CANPackerOld 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								from  selfdrive . can . packer  import  CANPacker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  selfdrive . car . gm . gmcan  as  gmcan 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								from  selfdrive . car . gm . interface  import  CanBus  as  GMCanBus 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  TestPackerMethods ( unittest . TestCase ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  def  setUp ( self ) : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    self . gm_cp_old  =  CANPackerOld ( " gm_global_a_powertrain " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    self . gm_cp  =  CANPacker ( " gm_global_a_powertrain " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    self . ct6_cp_old  =  CANPackerOld ( " cadillac_ct6_chassis " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    self . ct6_cp  =  CANPacker ( " cadillac_ct6_chassis " ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  def  test_correctness ( self ) : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    # Test all cars' commands, randomize the params. 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    for  _  in  range ( 1000 ) : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      bus  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      apply_steer  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      idx  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      lkas_active  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m_old  =  gmcan . create_steering_control ( self . gm_cp_old ,  bus ,  apply_steer ,  idx ,  lkas_active ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m  =  gmcan . create_steering_control ( self . gm_cp ,  bus ,  apply_steer ,  idx ,  lkas_active ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      self . assertEqual ( m_old ,  m ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      canbus  =  GMCanBus ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      apply_steer  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      v_ego  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      idx  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      enabled  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m_old  =  gmcan . create_steering_control_ct6 ( self . ct6_cp_old ,  canbus ,  apply_steer ,  v_ego ,  idx ,  enabled ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m  =  gmcan . create_steering_control_ct6 ( self . ct6_cp ,  canbus ,  apply_steer ,  v_ego ,  idx ,  enabled ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      self . assertEqual ( m_old ,  m ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      bus  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      throttle  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      idx  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      acc_engaged  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      at_full_stop  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m_old  =  gmcan . create_gas_regen_command ( self . gm_cp_old ,  bus ,  throttle ,  idx ,  acc_engaged ,  at_full_stop ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m  =  gmcan . create_gas_regen_command ( self . gm_cp ,  bus ,  throttle ,  idx ,  acc_engaged ,  at_full_stop ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      self . assertEqual ( m_old ,  m ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      bus  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      apply_brake  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      idx  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      near_stop  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      at_full_stop  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m_old  =  gmcan . create_friction_brake_command ( self . ct6_cp_old ,  bus ,  apply_brake ,  idx ,  near_stop ,  at_full_stop ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m  =  gmcan . create_friction_brake_command ( self . ct6_cp ,  bus ,  apply_brake ,  idx ,  near_stop ,  at_full_stop ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      self . assertEqual ( m_old ,  m ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      bus  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      acc_engaged  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      target_speed_kph  =  random . randint ( 0 ,  65536 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      lead_car_in_sight  =  ( random . randint ( 0 ,  2 )  %  2  ==  0 ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m_old  =  gmcan . create_acc_dashboard_command ( self . gm_cp_old ,  bus ,  acc_engaged ,  target_speed_kph ,  lead_car_in_sight ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      m  =  gmcan . create_acc_dashboard_command ( self . gm_cp ,  bus ,  acc_engaged ,  target_speed_kph ,  lead_car_in_sight ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      self . assertEqual ( m_old ,  m ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if  __name__  ==  " __main__ " : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  unittest . main ( )