LCOV - code coverage report
Current view: top level - tests/situation - RssSituationCheckingInputRangeTests.cpp (source / functions) Hit Total Coverage
Test: ad_rss Lines: 164 164 100.0 %
Date: 2024-10-01 15:08:14 Functions: 62 62 100.0 %
Branches: 50 126 39.7 %

           Branch data     Line data    Source code
       1                 :            : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
       2                 :            : //
       3                 :            : // Copyright (C) 2018-2021 Intel Corporation
       4                 :            : //
       5                 :            : // SPDX-License-Identifier: LGPL-2.1-only
       6                 :            : //
       7                 :            : // ----------------- END LICENSE BLOCK -----------------------------------
       8                 :            : 
       9                 :            : #include "TestSupport.hpp"
      10                 :            : #include "ad/rss/core/RssSituationChecking.hpp"
      11                 :            : 
      12                 :            : namespace ad {
      13                 :            : namespace rss {
      14                 :            : namespace situation {
      15                 :            : 
      16                 :            : class RssSituationCheckingInputRangeTests : public testing::Test
      17                 :            : {
      18                 :            : protected:
      19                 :         30 :   virtual void SetUp()
      20                 :            :   {
      21                 :         30 :     leadingVehicle = createVehicleStateForLongitudinalMotion(100);
      22                 :            : 
      23                 :         30 :     followingVehicle = createVehicleStateForLongitudinalMotion(10);
      24                 :         30 :     situation.egoVehicleState = leadingVehicle;
      25                 :         30 :     situation.otherVehicleState = followingVehicle;
      26                 :         30 :     situation.relativePosition.longitudinalDistance = Distance(95.);
      27                 :         30 :     situation.relativePosition.longitudinalPosition = LongitudinalRelativePosition::InFront;
      28                 :         30 :     situation.relativePosition.lateralDistance = Distance(0.);
      29                 :         30 :     situation.relativePosition.lateralPosition = LateralRelativePosition::Overlap;
      30                 :         30 :     situation.situationType = SituationType::SameDirection;
      31                 :         30 :     situation.objectId = 1u;
      32                 :         30 :   }
      33                 :            : 
      34                 :      12001 :   virtual void performTestRun()
      35                 :            :   {
      36   [ +  -  -  +  :      12001 :     EXPECT_FALSE(situationChecking.checkSituationInputRangeChecked(situation, rssStateSnaphot));
          -  -  -  -  -  
                -  -  - ]
      37                 :      12001 :   }
      38                 :            :   core::RssSituationChecking situationChecking;
      39                 :            :   VehicleState leadingVehicle;
      40                 :            :   VehicleState followingVehicle;
      41                 :            :   Situation situation;
      42                 :            :   state::RssStateSnapshot rssStateSnaphot;
      43                 :            : };
      44                 :            : 
      45                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, validateTestSetup)
      46                 :            : {
      47   [ +  -  -  +  :          1 :   EXPECT_TRUE(situationChecking.checkSituationInputRangeChecked(situation, rssStateSnaphot));
          -  -  -  -  -  
                -  -  - ]
      48                 :          1 : }
      49                 :            : 
      50                 :            : /**
      51                 :            :  * Invalid longitudinal acceleration
      52                 :            :  */
      53                 :            : 
      54                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_acceleration_ego)
      55                 :            : {
      56         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
      57                 :            :   {
      58         [ +  - ]:        999 :     situation.egoVehicleState.dynamics.alphaLon.accelMax = -1. * Acceleration(i / 100.);
      59                 :        999 :     performTestRun();
      60                 :            :   }
      61                 :          1 : }
      62                 :            : 
      63                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_acceleration_other)
      64                 :            : {
      65         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
      66                 :            :   {
      67         [ +  - ]:        999 :     situation.otherVehicleState.dynamics.alphaLon.accelMax = -1. * Acceleration(i / 100.);
      68                 :        999 :     performTestRun();
      69                 :            :   }
      70                 :          1 : }
      71                 :            : 
      72                 :            : /**
      73                 :            :  * Invalid longitudinal brake min
      74                 :            :  */
      75                 :            : 
      76                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_zero_ego)
      77                 :            : {
      78                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(0.);
      79                 :            : 
      80                 :          1 :   performTestRun();
      81                 :          1 : }
      82                 :            : 
      83                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_positive_ego)
      84                 :            : {
      85         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
      86                 :            :   {
      87                 :        999 :     situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(i / 100.);
      88                 :        999 :     performTestRun();
      89                 :            :   }
      90                 :          1 : }
      91                 :            : 
      92                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_zero_other)
      93                 :            : {
      94                 :          1 :   situation.otherVehicleState.dynamics.alphaLon.brakeMin = Acceleration(0.);
      95                 :            : 
      96                 :          1 :   performTestRun();
      97                 :          1 : }
      98                 :            : 
      99                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_positive_other)
     100                 :            : {
     101         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     102                 :            :   {
     103                 :        999 :     situation.otherVehicleState.dynamics.alphaLon.brakeMin = Acceleration(i / 100.);
     104                 :        999 :     performTestRun();
     105                 :            :   }
     106                 :          1 : }
     107                 :            : 
     108                 :            : /**
     109                 :            :  * Invalid longitudinal brake max
     110                 :            :  */
     111                 :            : 
     112                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_zero_ego)
     113                 :            : {
     114                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(0.);
     115                 :          1 :   performTestRun();
     116                 :          1 : }
     117                 :            : 
     118                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_positive_ego)
     119                 :            : {
     120         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     121                 :            :   {
     122                 :        999 :     situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(i / 100.);
     123                 :        999 :     performTestRun();
     124                 :            :   }
     125                 :          1 : }
     126                 :            : 
     127                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_zero_other)
     128                 :            : {
     129                 :          1 :   situation.otherVehicleState.dynamics.alphaLon.brakeMax = Acceleration(0.);
     130                 :          1 :   performTestRun();
     131                 :          1 : }
     132                 :            : 
     133                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_positive_other)
     134                 :            : {
     135         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     136                 :            :   {
     137                 :        999 :     situation.otherVehicleState.dynamics.alphaLon.brakeMax = Acceleration(i / 100.);
     138                 :        999 :     performTestRun();
     139                 :            :   }
     140                 :          1 : }
     141                 :            : 
     142                 :            : /**
     143                 :            :  * Invalid longitudinal brake min correct
     144                 :            :  */
     145                 :            : 
     146                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_correct_zero_ego)
     147                 :            : {
     148                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(0.);
     149                 :          1 :   performTestRun();
     150                 :          1 : }
     151                 :            : 
     152                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_correct_positive_ego)
     153                 :            : {
     154         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     155                 :            :   {
     156                 :        999 :     situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(i / 100.);
     157                 :        999 :     performTestRun();
     158                 :            :   }
     159                 :          1 : }
     160                 :            : 
     161                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_correct_zero_other)
     162                 :            : {
     163                 :          1 :   situation.otherVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(0.);
     164                 :          1 :   performTestRun();
     165                 :          1 : }
     166                 :            : 
     167                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_correct_positive_other)
     168                 :            : {
     169         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     170                 :            :   {
     171                 :        999 :     situation.otherVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(i / 100.);
     172                 :        999 :     performTestRun();
     173                 :            :   }
     174                 :          1 : }
     175                 :            : 
     176                 :            : /**
     177                 :            :  * break max < break min
     178                 :            :  */
     179                 :            : 
     180                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_smaller_brake_min)
     181                 :            : {
     182                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(-1.);
     183                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-2.);
     184                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-3.);
     185                 :            : 
     186                 :          1 :   performTestRun();
     187                 :          1 : }
     188                 :            : 
     189                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_max_smaller_brake_min_correct)
     190                 :            : {
     191                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-1.);
     192                 :            : 
     193                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-1.);
     194                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(-2.);
     195                 :            : 
     196                 :          1 :   performTestRun();
     197                 :          1 : }
     198                 :            : 
     199                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_invalid_deceleration_brake_min_smaller_brake_min_correct)
     200                 :            : {
     201                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-1.);
     202                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(-2.);
     203                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-4.);
     204                 :            : 
     205                 :          1 :   performTestRun();
     206                 :          1 : }
     207                 :            : 
     208                 :            : /**
     209                 :            :  * Invalid lateral brake min
     210                 :            :  */
     211                 :            : 
     212                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, lateral_invalid_deceleration_brake_min_zero_ego)
     213                 :            : {
     214                 :          1 :   situation.egoVehicleState.dynamics.alphaLat.brakeMin = Acceleration(0.);
     215                 :            : 
     216                 :          1 :   performTestRun();
     217                 :          1 : }
     218                 :            : 
     219                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, lateral_invalid_deceleration_brake_min_positive_ego)
     220                 :            : {
     221         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     222                 :            :   {
     223                 :        999 :     situation.egoVehicleState.dynamics.alphaLat.brakeMin = Acceleration(i / 100.);
     224                 :        999 :     performTestRun();
     225                 :            :   }
     226                 :          1 : }
     227                 :            : 
     228                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, lateral_invalid_deceleration_brake_min_zero_other)
     229                 :            : {
     230                 :          1 :   situation.otherVehicleState.dynamics.alphaLat.brakeMin = Acceleration(0.);
     231                 :            : 
     232                 :          1 :   performTestRun();
     233                 :          1 : }
     234                 :            : 
     235                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, lateral_invalid_deceleration_brake_min_positive_other)
     236                 :            : {
     237         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     238                 :            :   {
     239                 :        999 :     situation.otherVehicleState.dynamics.alphaLat.brakeMin = Acceleration(i / 100.);
     240                 :        999 :     performTestRun();
     241                 :            :   }
     242                 :          1 : }
     243                 :            : 
     244                 :            : /**
     245                 :            :  * Invalid lateral accel max
     246                 :            :  */
     247                 :            : 
     248                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, lateral_invalid_acceleration_ego)
     249                 :            : {
     250         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     251                 :            :   {
     252         [ +  - ]:        999 :     situation.otherVehicleState.dynamics.alphaLat.accelMax = -1. * Acceleration(i / 100.);
     253                 :        999 :     performTestRun();
     254                 :            :   }
     255                 :          1 : }
     256                 :            : 
     257                 :            : /**
     258                 :            :  * Invalid rssState time
     259                 :            :  */
     260                 :            : 
     261                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, invalid_response_time_zero_ego)
     262                 :            : {
     263                 :          1 :   situation.otherVehicleState.dynamics.responseTime = Duration(0.);
     264                 :          1 :   performTestRun();
     265                 :          1 : }
     266                 :            : 
     267                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, invalid_response_time_negative_ego)
     268                 :            : {
     269         [ +  + ]:       1000 :   for (int i = 1; i < 1000; i++)
     270                 :            :   {
     271         [ +  - ]:        999 :     situation.otherVehicleState.dynamics.responseTime = -1. * Duration(i / 100.);
     272                 :        999 :     performTestRun();
     273                 :            :   }
     274                 :          1 : }
     275                 :            : 
     276                 :            : /**
     277                 :            :  * break max == break min
     278                 :            :  */
     279                 :            : 
     280                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_correct_deceleration_brake_max_equals_brake_min)
     281                 :            : {
     282                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-4.);
     283                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-4.);
     284                 :            : 
     285   [ +  -  -  +  :          1 :   ASSERT_TRUE(situationChecking.checkSituationInputRangeChecked(situation, rssStateSnaphot));
          -  -  -  -  -  
                -  -  - ]
     286                 :            : }
     287                 :            : 
     288                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, longitudinal_correct_deceleration_brake_min_equals_brake_min_correct)
     289                 :            : {
     290                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-4.);
     291                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-3.);
     292                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(-3.);
     293                 :            : 
     294   [ +  -  -  +  :          1 :   ASSERT_TRUE(situationChecking.checkSituationInputRangeChecked(situation, rssStateSnaphot));
          -  -  -  -  -  
                -  -  - ]
     295                 :            : }
     296                 :            : 
     297                 :          2 : TEST_F(RssSituationCheckingInputRangeTests,
     298                 :            :        longitudinal_correct_deceleration_brake_min_equals_brake_min_correct_equals_brake_max)
     299                 :            : {
     300                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMax = Acceleration(-3.);
     301                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMin = Acceleration(-3.);
     302                 :          1 :   situation.egoVehicleState.dynamics.alphaLon.brakeMinCorrect = Acceleration(-3.);
     303                 :            : 
     304   [ +  -  -  +  :          1 :   ASSERT_TRUE(situationChecking.checkSituationInputRangeChecked(situation, rssStateSnaphot));
          -  -  -  -  -  
                -  -  - ]
     305                 :            : }
     306                 :            : 
     307                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, situationSnapshotSizeRange)
     308                 :            : {
     309         [ +  + ]:        103 :   for (size_t situationCount = 0u; situationCount < 1011u; situationCount += 10u)
     310                 :            :   {
     311                 :        204 :     SituationSnapshot situationSnapshot;
     312                 :        204 :     state::RssStateSnapshot rssStateSnapshot;
     313         [ +  - ]:        102 :     situationSnapshot.defaultEgoVehicleRssDynamics = getEgoRssDynamics();
     314         [ +  - ]:        102 :     situationSnapshot.situations.resize(situationCount, situation);
     315                 :        102 :     situationSnapshot.timeIndex = situationCount + 1u;
     316         [ +  + ]:      51612 :     for (size_t i = 0u; i < situationCount; ++i)
     317                 :            :     {
     318                 :      51510 :       situationSnapshot.situations[i].situationId = i;
     319                 :      51510 :       situationSnapshot.situations[i].objectId = i;
     320                 :            :     }
     321                 :            : 
     322         [ +  + ]:        102 :     if (situationCount <= 1000u)
     323                 :            :     {
     324   [ +  -  -  +  :        101 :       EXPECT_TRUE(situationChecking.checkSituations(situationSnapshot, rssStateSnapshot));
          -  -  -  -  -  
                -  -  - ]
     325                 :            :     }
     326                 :            :     else
     327                 :            :     {
     328   [ +  -  -  +  :          1 :       EXPECT_FALSE(situationChecking.checkSituations(situationSnapshot, rssStateSnapshot));
          -  -  -  -  -  
                -  -  - ]
     329                 :            :     }
     330                 :            :   }
     331                 :          1 : }
     332                 :            : 
     333                 :          2 : TEST_F(RssSituationCheckingInputRangeTests, invalid_situation_type)
     334                 :            : {
     335                 :          1 :   situation.situationType = static_cast<SituationType>(-1);
     336                 :          1 :   performTestRun();
     337                 :          1 : }
     338                 :            : 
     339                 :            : #if INVALID_AD_PHYSICS_DISTANCE_THROWS_EXCEPTION
     340                 :            : TEST_F(RssSituationCheckingInputRangeTests, nan_values)
     341                 :            : {
     342                 :            :   situation.relativePosition.longitudinalDistance = Distance();
     343                 :            :   performTestRun();
     344                 :            : }
     345                 :            : #endif
     346                 :            : 
     347                 :            : } // namespace situation
     348                 :            : } // namespace rss
     349                 :            : } // namespace ad

Generated by: LCOV version 1.14