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
|