Files
StarPilot/selfdrive/car/tests/test_docs.py
T
Cameron Clough a16eff689a Kia: update required packages (#25824)
* Kia: LKAS is standard on Ceed 2019

https://www.downeys.co.uk/newmodels/Ceed_V3_24_09_2019.pdf

* Kia: delete Forte 2018

It doesn't appear that this vehicle has Adaptive/Smart Cruise Control in
any form, which was later added in 2019.

https://cdn.dealereprocess.org/cdn/brochures/kia/2018-forte.pdf
https://cdn.dealereprocess.org/cdn/brochures/kia/2019-forte.pdf

* Kia: LKAS is standard on Forte 2019+

https://cdn.dealereprocess.org/cdn/brochures/kia/2019-forte.pdf
https://cdn.dealereprocess.org/cdn/brochures/kia/2020-forte.pdf

* Kia: rename Niro Electric to EV

https://www.kia.com/us/en/niro

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Kia: LKAS is standard on Niro PHEV 2018+

https://cdn.dealereprocess.org/cdn/brochures/kia/2018-niro.pdf
https://cdn.dealereprocess.org/cdn/brochures/kia/2019-niro.pdf

* Kia: update required package on Optima 2017

The ACC package on the Optima 2017 is named "Advanced Smart Cruise
Control". It also doesn't have an LKAS package, only LDWS is available.

https://cdn.dealereprocess.org/cdn/brochures/kia/2017-optima.pdf

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Kia: LKAS is standard on Optima 2019

https://cdn.dealereprocess.org/cdn/brochures/kia/2019-optima.pdf

* Kia: revert package change to Seltos 2021

LKAS is NOT a standard package on the Seltos 2021

https://cdn.dealereprocess.org/cdn/brochures/kia/2021-seltos.pdf

* Kia: update required package on Sorento 2018

Similar to the Optima 2017, the ACC package on the Sorento 2018 is named
"Advanced Smart Cruise Control". It also doesn't have an LKAS package,
only LDWS.

SCC and LKAS were introduced in MY2019.

https://cdn.dealereprocess.org/cdn/brochures/kia/2018-sorento.pdf

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Kia: SCC is standard on Kia Niro PHEV 2018-19

https://cdn.dealereprocess.org/cdn/brochures/kia/2018-niro.pdf

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Kia: update required package on Optima Hybrid 2017

Similar to the Optima 2017, the ACC package on he Optima Hybrid 2017 is
named "Advanced Smart Cruise Control". It also doesn't have an LKAS
pacakge, only LDWS.

https://cdn.dealereprocess.org/cdn/brochures/kia/2017-optimahybrid.pdf

* update docs

Co-authored-by: Shane Smiskol <shane@smiskol.com>
old-commit-hash: 06fb52c146aa9e00126127ac28fbbd22e9914e6f
2022-09-17 00:24:57 -07:00

71 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python3
import re
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
from selfdrive.car.docs_definitions import Column, Harness, Star
from selfdrive.car.honda.values import CAR as HONDA
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 update the compatibility 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()):
with self.subTest(platform=platform):
self.assertTrue(platform in all_car_info_platforms, "Platform: {} doesn't exist in CarInfo".format(platform))
def test_naming_conventions(self):
# Asserts market-standard car naming conventions by brand
for car in self.all_cars:
with self.subTest(car=car):
tokens = car.model.lower().split(" ")
if car.car_name == "hyundai":
self.assertNotIn("phev", tokens, "Use `Plug-in Hybrid`")
self.assertNotIn("hev", tokens, "Use `Hybrid`")
if "plug-in hybrid" in car.model.lower():
self.assertIn("Plug-in Hybrid", car.model, "Use correct capitalization")
if car.make != "Kia":
self.assertNotIn("ev", tokens, "Use `Electric`")
elif car.car_name == "toyota":
if "rav4" in tokens:
self.assertIn("RAV4", car.model, "Use correct capitalization")
def test_torque_star(self):
# Asserts brand-specific assumptions around steering torque star
for car in self.all_cars:
with self.subTest(car=car):
# honda sanity check, it's the definition of a no torque star
if car.car_fingerprint in (HONDA.ACCORD, HONDA.CIVIC, HONDA.CRV, HONDA.ODYSSEY, HONDA.PILOT):
self.assertEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has full torque star")
elif car.car_name in ("toyota", "hyundai"):
self.assertNotEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has no torque star")
def test_year_format(self):
for car in self.all_cars:
with self.subTest(car=car):
self.assertIsNone(re.search(r"\d{4}-\d{4}", car.name), f"Format years correctly: {car.name}")
def test_harnesses(self):
for car in self.all_cars:
with self.subTest(car=car):
if car.name == "comma body":
raise unittest.SkipTest
self.assertNotIn(car.harness, [None, Harness.none], f"Need to specify car harness: {car.name}")
if __name__ == "__main__":
unittest.main()