LCOV - code coverage report
Current view: top level - tests/src - RssWorldModelCreationTestRoadBoundaries.cpp (source / functions) Hit Total Coverage
Test: ad_rss_map_integration Lines: 51 51 100.0 %
Date: 2025-07-22 06:56:19 Functions: 2 2 100.0 %
Branches: 74 306 24.2 %

           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 <ad/rss/map/test_support/RssWorldModelCreationTest.hpp>
      10                 :            : 
      11                 :            : struct RssWorldModelCreationTestRoadBoundaries : ad::rss::map::test_support::RssWorldModelCreationTestTown01
      12                 :            : {
      13                 :          1 :   TestMode getTestMode() override
      14                 :            :   {
      15                 :          1 :     return TestMode::withRouteWithSpeedLimit;
      16                 :            :   }
      17                 :            : };
      18                 :            : 
      19                 :          4 : TEST_F(RssWorldModelCreationTestRoadBoundaries, testAppendRoadBoundaries)
      20                 :            : {
      21   [ +  -  +  - ]:          1 :   ::ad::rss::map::RssWorldModelCreation constellationCreation(1u, mCheckerControlTest->getEgoVehicleDynamics());
      22                 :            : 
      23                 :            :   auto ego_vehicle
      24   [ +  -  +  -  :          1 :     = createEgoVehicle(::ad::rss::world::ObjectId(123), getEgoVehicleStartLocation(), getEgoVehicleTarget());
             +  -  +  - ]
      25         [ +  - ]:          1 :   auto const egoObjectData = ego_vehicle->getTestRssObjecData();
      26                 :            : 
      27                 :          4 :   for (auto appendMode : {::ad::rss::map::RssAppendRoadBoundariesMode::RouteOnly,
      28                 :            :                           ::ad::rss::map::RssAppendRoadBoundariesMode::ExpandRouteToOppositeLanes,
      29         [ +  + ]:          5 :                           ::ad::rss::map::RssAppendRoadBoundariesMode::ExpandRouteToAllNeighbors})
      30                 :            :   {
      31   [ +  -  -  +  :          3 :     EXPECT_TRUE(constellationCreation.appendRoadBoundaries(egoObjectData, ego_vehicle->mTestRoute, appendMode));
          -  -  -  -  -  
                -  -  - ]
      32                 :            :   }
      33   [ +  -  -  +  :          1 :   EXPECT_EQ(constellationCreation.mWorldModel.constellations.size(), 6u);
          -  -  -  -  -  
                      - ]
      34                 :            : 
      35         [ +  - ]:          1 :   auto egoObjectCorruptBoundingBox = egoObjectData;
      36                 :          1 :   egoObjectCorruptBoundingBox.match_object = ::ad::map::match::Object();
      37                 :            :   // invalid bounding box
      38   [ +  -  -  +  :          1 :   EXPECT_FALSE(constellationCreation.appendRoadBoundaries(
          -  -  -  -  -  
                -  -  - ]
      39                 :          1 :     egoObjectCorruptBoundingBox, ego_vehicle->mTestRoute, ::ad::rss::map::RssAppendRoadBoundariesMode::RouteOnly));
      40                 :            : 
      41                 :            :   // invalid speed
      42         [ +  - ]:          1 :   auto egoObjectCorruptSpeed = egoObjectData;
      43                 :          1 :   egoObjectCorruptSpeed.speed_range.minimum = ::ad::physics::Speed();
      44                 :          1 :   egoObjectCorruptSpeed.speed_range.maximum = ::ad::physics::Speed();
      45   [ +  -  -  +  :          1 :   EXPECT_FALSE(constellationCreation.appendRoadBoundaries(
          -  -  -  -  -  
                -  -  - ]
      46                 :          1 :     egoObjectCorruptSpeed, ego_vehicle->mTestRoute, ::ad::rss::map::RssAppendRoadBoundariesMode::RouteOnly));
      47                 :            : 
      48                 :            :   // invalid route
      49   [ +  -  -  +  :          1 :   EXPECT_FALSE(constellationCreation.appendRoadBoundaries(
          -  -  -  -  -  
                -  -  - ]
      50                 :          1 :     egoObjectData, ::ad::map::route::FullRoute(), ::ad::rss::map::RssAppendRoadBoundariesMode::RouteOnly));
      51                 :            : 
      52   [ +  -  -  +  :          1 :   EXPECT_EQ(constellationCreation.mWorldModel.constellations.size(), 6u);
          -  -  -  -  -  
                      - ]
      53                 :            : 
      54         [ +  + ]:          7 :   for (auto i = 0u; i < constellationCreation.mWorldModel.constellations.size(); ++i)
      55                 :            :   {
      56                 :          6 :     auto &constellation = constellationCreation.mWorldModel.constellations[i];
      57   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::rss::world::ConstellationType::SameDirection, constellation.constellation_type);
          -  -  -  -  -  
                      - ]
      58         [ +  + ]:          6 :     if (i == 0u)
      59                 :            :     {
      60                 :            :     }
      61         [ +  + ]:          5 :     else if (i == 2u)
      62                 :            :     {
      63                 :            :     }
      64         [ +  + ]:          4 :     else if (i == 4u)
      65                 :            :     {
      66                 :            :     }
      67                 :            :     else
      68                 :            :     {
      69   [ +  -  -  +  :          3 :       EXPECT_EQ(constellation.ego_vehicle_road,
          -  -  -  -  -  
                      - ]
      70                 :          3 :                 constellationCreation.mWorldModel.constellations[i - 1].ego_vehicle_road);
      71                 :            :     }
      72                 :            : 
      73                 :            :     // object data
      74   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::rss::world::ObjectType::ArtificialObject, constellation.object.object_type);
          -  -  -  -  -  
                      - ]
      75                 :            : 
      76   [ +  -  -  +  :          6 :     EXPECT_TRUE(withinValidInputRange(constellation.object_rss_dynamics));
          -  -  -  -  -  
                -  -  - ]
      77   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(0.), constellation.object_rss_dynamics.alpha_lat.accel_max);
          -  -  -  -  -  
                      - ]
      78   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), constellation.object_rss_dynamics.alpha_lat.brake_min);
          -  -  -  -  -  
                      - ]
      79   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(0.), constellation.object_rss_dynamics.alpha_lon.accel_max);
          -  -  -  -  -  
                      - ]
      80   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), constellation.object_rss_dynamics.alpha_lon.brake_max);
          -  -  -  -  -  
                      - ]
      81   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), constellation.object_rss_dynamics.alpha_lon.brake_min);
          -  -  -  -  -  
                      - ]
      82   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Acceleration(-0.01), constellation.object_rss_dynamics.alpha_lon.brake_min_correct);
          -  -  -  -  -  
                      - ]
      83   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Distance(0.), constellation.object_rss_dynamics.lateral_fluctuation_margin);
          -  -  -  -  -  
                      - ]
      84   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Duration(0.01), constellation.object_rss_dynamics.response_time);
          -  -  -  -  -  
                      - ]
      85                 :            : 
      86   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), constellation.object.velocity.speed_lon_min);
          -  -  -  -  -  
                      - ]
      87   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), constellation.object.velocity.speed_lon_max);
          -  -  -  -  -  
                      - ]
      88   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), constellation.object.velocity.speed_lat_min);
          -  -  -  -  -  
                      - ]
      89   [ +  -  -  +  :          6 :     EXPECT_EQ(::ad::physics::Speed(0.), constellation.object.velocity.speed_lat_max);
          -  -  -  -  -  
                      - ]
      90                 :            : 
      91         [ +  + ]:          6 :     if (i % 2u)
      92                 :            :     {
      93                 :            :       // left border
      94   [ +  -  -  +  :          3 :       EXPECT_EQ(std::numeric_limits<::ad::rss::world::ObjectId>::max() - 1, constellation.object.object_id);
          -  -  -  -  -  
                      - ]
      95                 :            :     }
      96                 :            :     else
      97                 :            :     {
      98                 :            :       // right border
      99   [ +  -  -  +  :          3 :       EXPECT_EQ(std::numeric_limits<::ad::rss::world::ObjectId>::max(), constellation.object.object_id);
          -  -  -  -  -  
                      - ]
     100                 :            :     }
     101                 :            : 
     102   [ +  -  -  +  :          6 :     EXPECT_TRUE(withinValidInputRange(constellation));
          -  -  -  -  -  
                -  -  - ]
     103                 :            :   }
     104                 :            : 
     105         [ +  - ]:          1 :   auto const world_model = constellationCreation.getWorldModel();
     106   [ +  -  -  +  :          1 :   EXPECT_TRUE(withinValidInputRange(world_model));
          -  -  -  -  -  
                -  -  - ]
     107                 :          1 : }
     108                 :            : 
     109                 :            : // @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