#!/usr/bin/env python3 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  unittest 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  selfdrive . car . car_helpers  import  interfaces ,  get_interface_attr 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  selfdrive . car . docs  import  CARS_MD_OUT ,  CARS_MD_TEMPLATE ,  generate_cars_md ,  get_all_car_info 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  TestCarDocs ( unittest . TestCase ) : 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  setUp ( self ) : 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    self . all_cars  =  get_all_car_info ( ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_generator ( self ) : 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    generated_cars_md  =  generate_cars_md ( self . all_cars ,  CARS_MD_TEMPLATE ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    with  open ( CARS_MD_OUT ,  " r " )  as  f : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      current_cars_md  =  f . read ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    self . assertEqual ( generated_cars_md ,  current_cars_md , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     " Run selfdrive/car/docs.py to generate new supported cars documentation " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_missing_car_info ( self ) : 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    all_car_info_platforms  =  get_interface_attr ( " CAR_INFO " ,  combine_brands = True ) . keys ( ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  platform  in  sorted ( interfaces . keys ( ) ) : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  platform  not  in  all_car_info_platforms : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . fail ( " Platform:  {}  doesn ' t exist in CarInfo " . format ( platform ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_naming_conventions ( self ) : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Asserts market-standard car naming conventions by make 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  car  in  self . all_cars : 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								      tokens  =  car . model . lower ( ) . split ( "   " ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  car . car_name  ==  " hyundai " : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertNotIn ( " phev " ,  tokens ,  " Use `Plug-in Hybrid` " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertNotIn ( " hev " ,  tokens ,  " Use `Hybrid` " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . assertNotIn ( " ev " ,  tokens ,  " Use `Electric` " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  " plug-in hybrid "  in  car . model . lower ( ) : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          self . assertIn ( " Plug-in Hybrid " ,  car . model ,  " Use correct capitalization " ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								      elif  car . car_name  ==  " toyota " : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  " rav4 "  in  tokens : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          self . assertIn ( " RAV4 " ,  car . model ,  " Use correct capitalization " ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  __name__  ==  " __main__ " : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unittest . main ( )