LCOV - code coverage report
Current view: top level - tests - RssSceneCreationTests.cpp (source / functions) Hit Total Coverage
Test: ad_rss_map_integration Lines: 50 52 96.2 %
Date: 2024-12-17 12:06:23 Functions: 2 3 66.7 %
Branches: 69 296 23.3 %

           Branch data     Line data    Source code
       1                 :            : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
       2                 :            : //
       3                 :            : // Copyright (C) 2019-2021 Intel Corporation
       4                 :            : //
       5                 :            : // SPDX-License-Identifier: LGPL-2.1-only
       6                 :            : //
       7                 :            : // ----------------- END LICENSE BLOCK -----------------------------------
       8                 :            : 
       9                 :            : #include "RssSceneCreationTest.hpp"
      10                 :            : 
      11                 :            : struct RssSceneCreationTestRoadBoundaries : RssSceneCreationTestTown01
      12                 :            : {
      13                 :          0 :   TestMode getTestMode() override
      14                 :            :   {
      15                 :          0 :     return TestMode::withRouteWithSpeedLimit;
      16                 :            :   }
      17                 :            : };
      18                 :            : 
      19                 :          2 : TEST_F(RssSceneCreationTestRoadBoundaries, testAppendRoadBoundaries)
      20                 :            : {
      21         [ +  - ]:          2 :   ::ad::rss::map::RssSceneCreation sceneCreation(1u, getEgoVehicleDynamics());
      22                 :            : 
      23                 :          2 :   ::ad::rss::map::RssObjectData egoObjectData;
      24                 :          1 :   egoObjectData.id = egoVehicleId;
      25                 :          1 :   egoObjectData.type = ::ad::rss::world::ObjectType::EgoVehicle;
      26         [ +  - ]:          1 :   egoObjectData.matchObject = egoMatchObject;
      27                 :          1 :   egoObjectData.speed = egoSpeed;
      28                 :          1 :   egoObjectData.yawRate = egoYawRate;
      29                 :          1 :   egoObjectData.steeringAngle = egoSteeringAngle;
      30                 :          1 :   egoObjectData.rssDynamics = getEgoVehicleDynamics();
      31                 :            : 
      32                 :          3 :   for (auto appendMode : {::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::RouteOnly,
      33                 :            :                           ::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::ExpandRouteToOppositeLanes,
      34         [ +  + ]:          4 :                           ::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::ExpandRouteToAllNeighbors})
      35                 :            :   {
      36   [ +  -  -  +  :          3 :     EXPECT_TRUE(sceneCreation.appendRoadBoundaries(egoObjectData, egoRoute, appendMode));
          -  -  -  -  -  
                -  -  - ]
      37                 :            :   }
      38   [ +  -  -  +  :          1 :   EXPECT_EQ(sceneCreation.mWorldModel.scenes.size(), 6u);
          -  -  -  -  -  
                      - ]
      39                 :            : 
      40         [ +  - ]:          2 :   auto egoObjectCorruptBoundingBox = egoObjectData;
      41                 :          1 :   egoObjectCorruptBoundingBox.matchObject = ::ad::map::match::Object();
      42                 :            :   // invalid bounding box
      43   [ +  -  -  +  :          1 :   EXPECT_FALSE(sceneCreation.appendRoadBoundaries(
          -  -  -  -  -  
                -  -  - ]
      44                 :            :     egoObjectCorruptBoundingBox, egoRoute, ::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::RouteOnly));
      45                 :            : 
      46                 :            :   // invalid speed
      47         [ +  - ]:          2 :   auto egoObjectCorruptSpeed = egoObjectData;
      48                 :          1 :   egoObjectCorruptSpeed.speed = ::ad::physics::Speed();
      49   [ +  -  -  +  :          1 :   EXPECT_FALSE(sceneCreation.appendRoadBoundaries(
          -  -  -  -  -  
                -  -  - ]
      50                 :            :     egoObjectCorruptSpeed, egoRoute, ::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::RouteOnly));
      51                 :            : 
      52                 :            :   // invalid route
      53   [ +  -  -  +  :          1 :   EXPECT_FALSE(
          -  -  -  -  -  
                -  -  - ]
      54                 :            :     sceneCreation.appendRoadBoundaries(egoObjectData,
      55                 :            :                                        ::ad::map::route::FullRoute(),
      56                 :            :                                        ::ad::rss::map::RssSceneCreation::AppendRoadBoundariesMode::RouteOnly));
      57                 :            : 
      58   [ +  -  -  +  :          1 :   EXPECT_EQ(sceneCreation.mWorldModel.scenes.size(), 6u);
          -  -  -  -  -  
                      - ]
      59                 :            : 
      60         [ +  + ]:          7 :   for (auto i = 0u; i < sceneCreation.mWorldModel.scenes.size(); ++i)
      61                 :            :   {
      62                 :          6 :     auto &scene = sceneCreation.mWorldModel.scenes[i];
      63   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::rss::situation::SituationType::SameDirection, scene.situationType);
          -  -  -  -  -  
                      - ]
      64         [ +  + ]:          6 :     if (i == 0u)
      65                 :            :     {
      66                 :            :     }
      67         [ +  + ]:          5 :     else if (i == 2u)
      68                 :            :     {
      69                 :            :     }
      70         [ +  + ]:          4 :     else if (i == 4u)
      71                 :            :     {
      72                 :            :     }
      73                 :            :     else
      74                 :            :     {
      75   [ +  -  -  +  :          3 :       EXPECT_EQ(scene.egoVehicleRoad, sceneCreation.mWorldModel.scenes[i - 1].egoVehicleRoad);
          -  -  -  -  -  
                      - ]
      76                 :            :     }
      77                 :            : 
      78                 :            :     // object data
      79   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::rss::world::ObjectType::ArtificialObject, scene.object.objectType);
          -  -  -  -  -  
                      - ]
      80                 :            : 
      81   [ +  -  -  +  :          6 :     EXPECT_TRUE(withinValidInputRange(scene.objectRssDynamics));
          -  -  -  -  -  
                -  -  - ]
      82   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(0.), scene.objectRssDynamics.alphaLat.accelMax);
          -  -  -  -  -  
                      - ]
      83   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), scene.objectRssDynamics.alphaLat.brakeMin);
          -  -  -  -  -  
                      - ]
      84   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(0.), scene.objectRssDynamics.alphaLon.accelMax);
          -  -  -  -  -  
                      - ]
      85   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), scene.objectRssDynamics.alphaLon.brakeMax);
          -  -  -  -  -  
                      - ]
      86   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), scene.objectRssDynamics.alphaLon.brakeMin);
          -  -  -  -  -  
                      - ]
      87   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), scene.objectRssDynamics.alphaLon.brakeMinCorrect);
          -  -  -  -  -  
                      - ]
      88   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Distance(0.), scene.objectRssDynamics.lateralFluctuationMargin);
          -  -  -  -  -  
                      - ]
      89   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Duration(0.01), scene.objectRssDynamics.responseTime);
          -  -  -  -  -  
                      - ]
      90                 :            : 
      91   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), scene.object.velocity.speedLonMin);
          -  -  -  -  -  
                      - ]
      92   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), scene.object.velocity.speedLonMax);
          -  -  -  -  -  
                      - ]
      93   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), scene.object.velocity.speedLatMin);
          -  -  -  -  -  
                      - ]
      94   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), scene.object.velocity.speedLatMax);
          -  -  -  -  -  
                      - ]
      95                 :            : 
      96         [ +  + ]:          6 :     if (i % 2u)
      97                 :            :     {
      98                 :            :       // left border
      99   [ +  -  -  +  :          3 :       EXPECT_EQ(std::numeric_limits<::ad::rss::world::ObjectId>::max() - 1, scene.object.objectId);
          -  -  -  -  -  
                      - ]
     100                 :            :     }
     101                 :            :     else
     102                 :            :     {
     103                 :            :       // right border
     104   [ +  -  -  +  :          3 :       EXPECT_EQ(std::numeric_limits<::ad::rss::world::ObjectId>::max(), scene.object.objectId);
          -  -  -  -  -  
                      - ]
     105                 :            :     }
     106                 :            : 
     107   [ +  -  -  +  :          6 :     EXPECT_TRUE(withinValidInputRange(scene));
          -  -  -  -  -  
                -  -  - ]
     108                 :            :   }
     109                 :            : 
     110         [ +  - ]:          2 :   auto const worldModel = sceneCreation.getWorldModel();
     111   [ +  -  -  +  :          1 :   EXPECT_TRUE(withinValidInputRange(worldModel));
          -  -  -  -  -  
                -  -  - ]
     112                 :          1 : }
     113                 :            : 
     114                 :            : // @TODO: create unit tests for merging use-cases; take e.g. TPK_PFZ map for this to find a possible intersection

Generated by: LCOV version 1.14