LCOV - code coverage report
Current view: top level - tests/unstructured - RssUnstructuredConstellationCheckerTests.cpp (source / functions) Hit Total Coverage
Test: ad_rss Lines: 200 200 100.0 %
Date: 2025-07-22 06:53:46 Functions: 21 21 100.0 %
Branches: 302 1092 27.7 %

           Branch data     Line data    Source code
       1                 :            : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
       2                 :            : //
       3                 :            : // Copyright (C) 2020-2021 Intel Corporation
       4                 :            : //
       5                 :            : // SPDX-License-Identifier: LGPL-2.1-only
       6                 :            : //
       7                 :            : // ----------------- END LICENSE BLOCK -----------------------------------
       8                 :            : 
       9                 :            : #include <ad/geometry/GeometryOperation.hpp>
      10                 :            : #include <ad/geometry/Types.hpp>
      11                 :            : #include "TestSupport.hpp"
      12                 :            : #include "ad/rss/unstructured/RssUnstructuredConstellationChecker.hpp"
      13                 :            : 
      14                 :            : namespace ad {
      15                 :            : namespace rss {
      16                 :            : namespace unstructured {
      17                 :            : 
      18                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateDriveAwayAngle)
      19                 :            : {
      20                 :          1 :   ::ad::geometry::HeadingRange range;
      21         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
      22   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      23         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(1, 0), physics::cPI / 4., range));
      24   [ +  -  +  -  :          1 :   ASSERT_EQ(range.begin, 3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      25   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, -3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      26                 :            : 
      27   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      28         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(0, 1), physics::cPI / 4., range));
      29   [ +  -  +  -  :          1 :   ASSERT_EQ(range.begin, -3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      30   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, -1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      31                 :            : 
      32   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      33         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(-1, 0), physics::cPI / 4., range));
      34   [ +  -  +  -  :          1 :   ASSERT_EQ(range.begin, -1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      35   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, 1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      36                 :            : 
      37   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      38         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(0, -1), physics::cPI / 4., range));
      39   [ +  -  +  -  :          1 :   ASSERT_EQ(range.begin, 1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      40   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, 3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      41                 :            : 
      42   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      43         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(1, 1), physics::cPI / 4., range));
      44   [ +  -  -  +  :          1 :   ASSERT_EQ(range.begin, physics::cPI);
          -  -  -  -  -  
                -  +  - ]
      45   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, -physics::cPI_2);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      46                 :            : 
      47   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      48         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(0, 1), 3. / 4. * physics::cPI, range));
      49   [ +  -  +  -  :          1 :   ASSERT_EQ(range.begin, 3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      50   [ +  -  +  -  :          1 :   ASSERT_EQ(range.end, 1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
      51                 :            : 
      52   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      53         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(0, 1), physics::cPI / 2., range));
      54   [ +  -  -  +  :          1 :   ASSERT_EQ(range.begin, physics::cPI);
          -  -  -  -  -  
                -  +  - ]
      55   [ +  -  -  +  :          1 :   ASSERT_EQ(range.end, physics::Angle(0.0));
          -  -  -  -  -  
                -  +  - ]
      56                 :            : 
      57   [ +  -  +  -  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateDriveAwayAngle(
          +  -  +  -  -  
          +  -  -  -  -  
             -  -  -  - ]
      58         [ +  - ]:          1 :     ::ad::geometry::Point(0, 0), ::ad::geometry::Point(0, -1), physics::cPI / 2., range));
      59   [ +  -  -  +  :          1 :   ASSERT_EQ(range.begin, physics::Angle(0.0));
          -  -  -  -  -  
                -  +  - ]
      60   [ +  -  -  +  :          1 :   ASSERT_EQ(range.end, physics::cPI);
          -  -  -  -  -  
                -  +  - ]
      61         [ +  - ]:          1 : }
      62                 :            : 
      63                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_emptyTrajectorySets)
      64                 :            : {
      65         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
      66                 :          1 :   state::UnstructuredConstellationRssState unstructured_constellation_state;
      67                 :          1 :   core::RelativeConstellation constellation;
      68                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
      69         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 0.0, 0.0);
      70         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 0.0, 0.0);
      71                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
      72                 :          1 :   state::UnstructuredConstellationStateInformation otherStateInfo;
      73   [ +  -  -  +  :          1 :   ASSERT_FALSE(unstructuredConstellationChecker.calculateState(
          -  -  -  -  -  
                -  -  - ]
      74         [ +  - ]:          1 :     constellation, egoStateInfo, otherStateInfo, unstructured_constellation_state));
      75   [ +  -  +  -  :          1 : }
          +  -  +  -  +  
                      - ]
      76                 :            : 
      77                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_other_in_front_of_ego_stopped)
      78                 :            : {
      79         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
      80                 :          1 :   state::UnstructuredConstellationRssState unstructured_constellation_state;
      81                 :          1 :   core::RelativeConstellation constellation;
      82                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
      83         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 0.0, 0.0);
      84         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 0.0, 0.0);
      85         [ +  - ]:          1 :   constellation.ego_state.dynamics.unstructured_settings.drive_away_max_angle = physics::cPI / 4.;
      86                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
      87                 :          1 :   state::UnstructuredConstellationStateInformation otherStateInfo;
      88   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 0.5), true, egoStateInfo, constellation.ego_state);
      89   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 4.5), true, otherStateInfo, constellation.other_state);
      90   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateState(
          -  -  -  -  -  
                -  -  - ]
      91         [ +  - ]:          1 :     constellation, egoStateInfo, otherStateInfo, unstructured_constellation_state));
      92   [ -  +  -  -  :          1 :   ASSERT_TRUE(unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
      93   [ +  -  -  +  :          1 :   ASSERT_EQ(unstructured_constellation_state.response, state::UnstructuredConstellationResponse::ContinueForward);
          -  -  -  -  -  
                -  +  - ]
      94                 :            : 
      95                 :            :   // Drive away
      96   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 0.5), true, egoStateInfo, constellation.ego_state);
      97   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 2.0), true, otherStateInfo, constellation.other_state);
      98   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateState(
          -  -  -  -  -  
                -  -  - ]
      99         [ +  - ]:          1 :     constellation, egoStateInfo, otherStateInfo, unstructured_constellation_state));
     100   [ -  +  -  -  :          1 :   ASSERT_FALSE(unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     101   [ +  -  -  +  :          1 :   ASSERT_EQ(unstructured_constellation_state.response,
          -  -  -  -  -  
                      - ]
     102         [ +  - ]:          1 :             state::UnstructuredConstellationResponse::DriveAway); // as both stopped
     103   [ +  -  +  -  :          1 :   ASSERT_EQ(unstructured_constellation_state.heading_range.begin, -3. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
     104   [ +  -  +  -  :          1 :   ASSERT_EQ(unstructured_constellation_state.heading_range.end, -1. / 4. * physics::cPI);
          -  +  -  -  -  
             -  -  -  +  
                      - ]
     105   [ +  -  +  -  :          1 : }
          +  -  +  -  +  
                      - ]
     106                 :            : 
     107                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_frontal_ego_approaching)
     108                 :            : {
     109         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
     110                 :          1 :   state::UnstructuredConstellationRssState unstructured_constellation_state;
     111                 :          1 :   core::RelativeConstellation constellation;
     112                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
     113         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 1.0, 0.0);
     114         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 0.0, 0.0);
     115         [ +  - ]:          1 :   constellation.ego_state.dynamics.unstructured_settings.drive_away_max_angle = physics::cPI / 4.;
     116                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
     117                 :          1 :   state::UnstructuredConstellationStateInformation otherStateInfo;
     118   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 0.5), true, egoStateInfo, constellation.ego_state);
     119   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 4.5), false, otherStateInfo, constellation.other_state);
     120   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateState(
          -  -  -  -  -  
                -  -  - ]
     121         [ +  - ]:          1 :     constellation, egoStateInfo, otherStateInfo, unstructured_constellation_state));
     122   [ -  +  -  -  :          1 :   ASSERT_TRUE(unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     123   [ +  -  -  +  :          1 :   ASSERT_EQ(unstructured_constellation_state.response, state::UnstructuredConstellationResponse::ContinueForward);
          -  -  -  -  -  
                -  +  - ]
     124                 :            : 
     125                 :            :   // brake
     126   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 0.5), true, egoStateInfo, constellation.ego_state);
     127   [ +  -  +  - ]:          1 :   getUnstructuredVehicle(::ad::geometry::Point(0.5, 1.5), false, otherStateInfo, constellation.other_state);
     128   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateState(
          -  -  -  -  -  
                -  -  - ]
     129         [ +  - ]:          1 :     constellation, egoStateInfo, otherStateInfo, unstructured_constellation_state));
     130   [ -  +  -  -  :          1 :   ASSERT_FALSE(unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     131   [ +  -  -  +  :          1 :   ASSERT_EQ(unstructured_constellation_state.response, state::UnstructuredConstellationResponse::Brake);
          -  -  -  -  -  
                -  +  - ]
     132   [ +  -  +  -  :          1 : }
          +  -  +  -  +  
                      - ]
     133                 :            : 
     134                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_ego_in_front_driving_continueforward)
     135                 :            : {
     136         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
     137                 :          1 :   core::RelativeConstellation constellation;
     138                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
     139         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 1.0, 0.0);
     140                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(20.0);
     141         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 1.0, 0.0);
     142                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(0.0);
     143                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
     144                 :            : 
     145                 :          1 :   state::RssState rssState;
     146   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     147         [ +  - ]:          1 :     world::TimeIndex(1.), constellation, egoStateInfo, rssState));
     148   [ -  +  -  -  :          1 :   ASSERT_TRUE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     149   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response,
          -  -  -  -  -  
                      - ]
     150         [ +  - ]:          1 :             state::UnstructuredConstellationResponse::ContinueForward);
     151                 :            : 
     152                 :            :   // other must brake, ego continue forward
     153                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     154   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     155         [ +  - ]:          1 :     world::TimeIndex(2.), constellation, egoStateInfo, rssState));
     156   [ -  +  -  -  :          1 :   ASSERT_TRUE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     157   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response,
          -  -  -  -  -  
                      - ]
     158         [ +  - ]:          1 :             state::UnstructuredConstellationResponse::ContinueForward);
     159   [ +  -  +  -  :          1 : }
             +  -  +  - ]
     160                 :            : 
     161                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_ego_in_front_stopped_drive_away)
     162                 :            : {
     163         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
     164                 :          1 :   core::RelativeConstellation constellation;
     165                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
     166         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 1.0, 0.0);
     167                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(20.0);
     168   [ +  -  +  - ]:          1 :   constellation.ego_state.dynamics.unstructured_settings.drive_away_max_angle = 3. * physics::cPI / 4.;
     169         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 1.0, 0.0);
     170                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(0.0);
     171                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
     172                 :            : 
     173                 :          1 :   state::RssState rssState;
     174   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     175         [ +  - ]:          1 :     world::TimeIndex(1.), constellation, egoStateInfo, rssState));
     176   [ -  +  -  -  :          1 :   ASSERT_TRUE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     177   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response,
          -  -  -  -  -  
                      - ]
     178         [ +  - ]:          1 :             state::UnstructuredConstellationResponse::ContinueForward);
     179                 :            : 
     180                 :            :   // other must brake, ego drive away
     181                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     182                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(0.0);
     183                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(0.0);
     184   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     185         [ +  - ]:          1 :     world::TimeIndex(2.), constellation, egoStateInfo, rssState));
     186   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     187   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::DriveAway);
          -  -  -  -  -  
                -  +  - ]
     188   [ +  -  +  -  :          1 : }
             +  -  +  - ]
     189                 :            : 
     190                 :          4 : TEST(RssUnstructuredConstellationCheckerTests, calculateState_other_in_front_stopped_drive_away)
     191                 :            : {
     192         [ +  - ]:          1 :   RssUnstructuredConstellationChecker unstructuredConstellationChecker;
     193                 :          1 :   core::RelativeConstellation constellation;
     194                 :          1 :   constellation.constellation_id = 1;
     195                 :          1 :   constellation.constellation_type = world::ConstellationType::Unstructured;
     196         [ +  - ]:          1 :   constellation.ego_state = createRelativeVehicleState(world::ObjectType::EgoVehicle, 1.0, 0.0);
     197                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(0.0);
     198   [ +  -  +  - ]:          1 :   constellation.ego_state.dynamics.unstructured_settings.drive_away_max_angle = 3. * physics::cPI / 4.;
     199         [ +  - ]:          1 :   constellation.other_state = createRelativeVehicleState(world::ObjectType::OtherVehicle, 0.0, 0.0);
     200                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(20.0);
     201                 :          1 :   state::UnstructuredConstellationStateInformation egoStateInfo;
     202                 :            : 
     203                 :          1 :   state::RssState rssState;
     204   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     205         [ +  - ]:          1 :     world::TimeIndex(1.), constellation, egoStateInfo, rssState));
     206   [ -  +  -  -  :          1 :   ASSERT_TRUE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     207   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response,
          -  -  -  -  -  
                      - ]
     208         [ +  - ]:          1 :             state::UnstructuredConstellationResponse::ContinueForward);
     209                 :            : 
     210                 :            :   // other must brake, ego drive away
     211                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     212                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(0.0);
     213                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(0.0);
     214   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     215         [ +  - ]:          1 :     world::TimeIndex(2.), constellation, egoStateInfo, rssState));
     216   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     217   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::DriveAway);
          -  -  -  -  -  
                -  +  - ]
     218                 :            : 
     219                 :            :   // ego drives away with forbidden heading
     220                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     221                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(5.0);
     222                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(5.0);
     223         [ +  - ]:          1 :   constellation.ego_state.unstructured_object_state.steering_angle = physics::cPI / 5.;
     224   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     225         [ +  - ]:          1 :     world::TimeIndex(3.), constellation, egoStateInfo, rssState));
     226   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     227   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::Brake);
          -  -  -  -  -  
                -  +  - ]
     228                 :            : 
     229                 :            :   // ego forced to stop. drive away again possible
     230                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     231                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(0.0);
     232                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(0.0);
     233   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     234         [ +  - ]:          1 :     world::TimeIndex(4.), constellation, egoStateInfo, rssState));
     235   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     236   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::DriveAway);
          -  -  -  -  -  
                -  +  - ]
     237                 :            : 
     238                 :            :   // ego drives away with allowed heading
     239                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     240                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(5.0);
     241                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(5.0);
     242         [ +  - ]:          1 :   constellation.ego_state.unstructured_object_state.steering_angle = physics::cPI / 4.;
     243   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     244         [ +  - ]:          1 :     world::TimeIndex(5.), constellation, egoStateInfo, rssState));
     245   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     246   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::DriveAway);
          -  -  -  -  -  
                -  +  - ]
     247                 :            : 
     248                 :            :   // ego drives away with allowed heading but other started to move again
     249                 :          1 :   constellation.ego_state.unstructured_object_state.center_point.x = physics::Distance(5.0);
     250                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.minimum = physics::Speed(5.0);
     251                 :          1 :   constellation.ego_state.unstructured_object_state.speed_range.maximum = physics::Speed(5.0);
     252         [ +  - ]:          1 :   constellation.ego_state.unstructured_object_state.steering_angle = physics::cPI / 4.;
     253                 :          1 :   constellation.other_state.unstructured_object_state.center_point.x = physics::Distance(21.0);
     254   [ +  -  -  +  :          1 :   ASSERT_TRUE(unstructuredConstellationChecker.calculateRssStateUnstructured(
          -  -  -  -  -  
                -  -  - ]
     255         [ +  - ]:          1 :     world::TimeIndex(6.), constellation, egoStateInfo, rssState));
     256   [ -  +  -  -  :          1 :   ASSERT_FALSE(rssState.unstructured_constellation_state.is_safe);
          -  -  -  -  -  
                -  +  - ]
     257   [ +  -  -  +  :          1 :   ASSERT_EQ(rssState.unstructured_constellation_state.response, state::UnstructuredConstellationResponse::Brake);
          -  -  -  -  -  
                -  +  - ]
     258   [ +  -  +  -  :          1 : }
             +  -  +  - ]
     259                 :            : 
     260                 :            : } // namespace unstructured
     261                 :            : } // namespace rss
     262                 :            : } // namespace ad

Generated by: LCOV version 1.14