mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-02 20:12:07 +08:00
a16eff689a
* 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
71 lines
2.9 KiB
Python
Executable File
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()
|