You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					57 lines
				
				2.9 KiB
			
		
		
			
		
	
	
					57 lines
				
				2.9 KiB
			| 
								 
											1 year ago
										 
									 | 
							
								from cereal import car
							 | 
						||
| 
								 | 
							
								from openpilot.selfdrive.controls.lib.longcontrol import LongCtrlState, long_control_state_trans
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestLongControlStateTransition:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def test_stay_stopped(self):
							 | 
						||
| 
								 | 
							
								    CP = car.CarParams.new_message()
							 | 
						||
| 
								 | 
							
								    active = True
							 | 
						||
| 
								 | 
							
								    current_state = LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								    next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=True, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								    assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								    next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=True, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								    assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								    next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=True)
							 | 
						||
| 
								 | 
							
								    assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								    next_state = long_control_state_trans(CP, active, current_state, v_ego=1.0,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								    assert next_state == LongCtrlState.pid
							 | 
						||
| 
								 | 
							
								    active = False
							 | 
						||
| 
								 | 
							
								    next_state = long_control_state_trans(CP, active, current_state, v_ego=1.0,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								    assert next_state == LongCtrlState.off
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_engage():
							 | 
						||
| 
								 | 
							
								  CP = car.CarParams.new_message()
							 | 
						||
| 
								 | 
							
								  active = True
							 | 
						||
| 
								 | 
							
								  current_state = LongCtrlState.off
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=True, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=True, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=True)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.stopping
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.pid
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_starting():
							 | 
						||
| 
								 | 
							
								  CP = car.CarParams.new_message(startingState=True, vEgoStarting=0.5)
							 | 
						||
| 
								 | 
							
								  active = True
							 | 
						||
| 
								 | 
							
								  current_state = LongCtrlState.starting
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=0.1,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.starting
							 | 
						||
| 
								 | 
							
								  next_state = long_control_state_trans(CP, active, current_state, v_ego=1.0,
							 | 
						||
| 
								 | 
							
								                             should_stop=False, brake_pressed=False, cruise_standstill=False)
							 | 
						||
| 
								 | 
							
								  assert next_state == LongCtrlState.pid
							 |