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
|