Source code for automotive_adas_tests

import unittest
from automotive_adas import (
    LaneDetection,
    AdaptiveCruiseControl,
    CollisionAvoidance,
    PedestrianDetection,
   TrafficSignRecognition,
    BlindSpotMonitor,
    DrowsinessMonitor,
    ParkingAssist,
)


[docs] class TestLaneDetection(unittest.TestCase): """ .. test:: Lane Detection Tests :id: TEST_001 :links: SWREQ_001, SWREQ_002, SWREQ_003, SWARCH_001 :author: THOMAS Unit tests for lane detection functionalities. """
[docs] def test_detect_lane_markings(self): """ .. test:: Lane Marking Detection Test :id: TEST_002 :links: SWREQ_001, SWARCH_001 :author: THOMAS """ lane_detection = LaneDetection() # Mock camera feed input self.assertTrue(lane_detection.detect_lane_markings(camera_feed="mock_feed"))
[docs] def test_apply_steering_correction(self): """ .. test:: Steering Correction Test :id: TEST_003 :links: SWREQ_003, SWARCH_001 :author: THOMAS """ lane_detection = LaneDetection() # Mock lane data self.assertTrue( lane_detection.apply_steering_correction(lane_data="mock_lane_data") )
[docs] class TestAdaptiveCruiseControl(unittest.TestCase): """ .. test:: Adaptive Cruise Control Tests :id: TEST_004 :links: SWREQ_004, SWREQ_005, SWREQ_013, SWARCH_002 :author: THOMAS Unit tests for adaptive cruise control functionalities. """
[docs] def test_measure_distance(self): """ .. test:: Distance Measurement Test :id: TEST_005 :links: SWREQ_004, SWARCH_002 :author: THOMAS """ acc = AdaptiveCruiseControl() # Mock radar data self.assertTrue(acc.measure_distance(radar_data="mock_radar"))
[docs] def test_adjust_speed(self): """ .. test:: Speed Adjustment Test :id: TEST_006 :links: SWREQ_005, SWREQ_013, SWARCH_002 """ acc = AdaptiveCruiseControl() self.assertTrue(acc.adjust_speed(target_speed=60))
[docs] class TestCollisionAvoidance(unittest.TestCase): """ .. test:: Collision Avoidance Tests :id: TEST_007 :links: SWREQ_006, SWREQ_007, SWREQ_015, SWARCH_003 Unit tests for collision avoidance functionalities. """
[docs] def test_detect_collision_risk(self): """ .. test:: Collision Risk Detection Test :id: TEST_008 :links: SWREQ_006, SWARCH_003 """ ca = CollisionAvoidance() # Mock sensor data self.assertTrue(ca.detect_collision_risk(sensor_data="mock_data"))
[docs] def test_apply_emergency_braking(self): """ .. test:: Emergency Braking Test :id: TEST_009 :links: SWREQ_007, SWARCH_003 """ ca = CollisionAvoidance() self.assertTrue(ca.apply_emergency_braking())
[docs] class TestPedestrianDetection(unittest.TestCase): """ .. test:: Pedestrian Detection Tests :id: TEST_010 :links: SWREQ_008, SWREQ_009, SWREQ_010, SWREQ_017, SWREQ_020, SWARCH_004, SWARCH_005, SWARCH_006 Unit tests for pedestrian detection functionalities. """
[docs] def test_detect_pedestrians(self): """ .. test:: Pedestrian Detection Test :id: TEST_011 :links: SWREQ_008, SWARCH_004 """ pd = PedestrianDetection() # Mock sensor data self.assertTrue(pd.detect_pedestrians(sensor_data="mock_data"))
[docs] def test_alert_driver(self): """ .. test:: Pedestrian Alert Test :id: TEST_012 :links: SWREQ_009, SWARCH_005 """ pd = PedestrianDetection() self.assertTrue(pd.alert_driver())
[docs] def test_initiate_emergency_brake(self): """ .. test:: Emergency Pedestrian Braking Test :id: TEST_013 :links: SWREQ_010, SWARCH_006 """ pd = PedestrianDetection() self.assertTrue(pd.initiate_emergency_brake())
[docs] class TestTrafficSignRecognition(unittest.TestCase): """ .. test:: Traffic Sign Recognition Tests :id: TEST_014 :status: passed :links: SWREQ_021, SWARCH_007 :author: THOMAS Unit tests for traffic sign recognition functionalities. """
[docs] def test_detect_speed_limit(self): """ .. test:: Speed Limit Sign Detection Test :id: TEST_015 :status: passed :links: SWREQ_021, SWARCH_007 :author: THOMAS """ tsr = TrafficSignRecognition() self.assertEqual(tsr.detect_speed_limit(camera_feed={"speed_limit": 50}), 50)
[docs] class TestBlindSpotMonitor(unittest.TestCase): """ .. test:: Blind Spot Monitor Tests :id: TEST_016 :status: open :links: SWREQ_022, SWREQ_023, SWARCH_008 :author: THOMAS Unit tests for blind spot monitor functionalities. """
[docs] def test_zone_occupancy_from_radar(self): """ .. test:: Blind Spot Radar Occupancy Test :id: TEST_017 :status: open :links: SWREQ_022, SWARCH_008 :author: THOMAS """ bsm = BlindSpotMonitor() zones = bsm.update_zone_occupancy( radar_tracks=[{"side": "left"}], camera_detections=[] ) self.assertTrue(zones["left"]) self.assertFalse(zones["right"])
[docs] def test_lane_change_warning_triggers_only_when_occupied(self): """ .. test:: Blind Spot Lane Change Arbitration Test :id: TEST_018 :status: open :links: SWREQ_023, SWARCH_008 :author: THOMAS """ bsm = BlindSpotMonitor() zones = {"left": True, "right": False} self.assertTrue(bsm.evaluate_lane_change(zones, turn_signal="left")) self.assertFalse(bsm.evaluate_lane_change(zones, turn_signal="right")) self.assertFalse(bsm.evaluate_lane_change(zones, turn_signal=None))
[docs] class TestDrowsinessMonitor(unittest.TestCase): """ .. test:: Drowsiness Monitor Tests :id: TEST_019 :status: open :links: SWREQ_024, SWREQ_025, SWARCH_009 :author: THOMAS Unit tests for driver drowsiness monitor functionalities. """
[docs] def test_alert_fires_when_eyes_closed_for_long_enough(self): """ .. test:: Drowsiness Alert Trigger Test :id: TEST_020 :status: open :links: SWREQ_025, SWARCH_009 :author: THOMAS """ dm = DrowsinessMonitor() alert = False for _ in range(20): alert = dm.update({"eye_aspect_ratio": 0.1}) if alert: break self.assertTrue(alert)
[docs] def test_alert_quiet_for_alert_driver(self): """ .. test:: Drowsiness No Alert Test :id: TEST_021 :status: open :links: SWREQ_025, SWARCH_009 :author: THOMAS """ dm = DrowsinessMonitor() for _ in range(20): self.assertFalse(dm.update({"eye_aspect_ratio": 0.35}))
[docs] class TestParkingAssist(unittest.TestCase): """ .. test:: Parking Assist Tests :id: TEST_022 :status: open :links: SWREQ_026, SWREQ_027, SWARCH_010 :author: THOMAS Unit tests for parking assist functionalities. """
[docs] def test_detects_first_parallel_slot_meeting_size(self): """ .. test:: Parking Slot Detection Test :id: TEST_023 :status: open :links: SWREQ_026, SWARCH_010 :author: THOMAS """ pa = ParkingAssist() slot = pa.detect_slot([3.0, 4.5, 6.0, 4.0], slot_kind="parallel") self.assertEqual(slot["index"], 2) self.assertEqual(slot["kind"], "parallel")
[docs] def test_plan_trajectory_varies_by_slot_kind(self): """ .. test:: Park Trajectory Planning Test :id: TEST_024 :status: open :links: SWREQ_027, SWARCH_010 :author: THOMAS """ pa = ParkingAssist() self.assertIn("reverse_into_slot", pa.plan_trajectory({"kind": "parallel"})) self.assertIn("forward_into_slot", pa.plan_trajectory({"kind": "perpendicular"})) self.assertEqual(pa.plan_trajectory(None), [])
if __name__ == "__main__": unittest.main()