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 "RssCheckTestBaseT.hpp"
10 : :
11 : : namespace ad {
12 : : namespace rss {
13 : : namespace core {
14 : :
15 : : class RssCheckObjectTests : public RssCheckTestBaseT<testing::Test>
16 : : {
17 : : };
18 : :
19 : 2 : TEST_F(RssCheckObjectTests, validateTestSetup)
20 : : {
21 : 1 : state::ProperResponse properResponse;
22 [ + - ]: 1 : core::RssCheck rssCheck;
23 : :
24 [ + - - + : 1 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
25 [ + - ]: 1 : testRestrictions(properResponse.accelerationRestrictions);
26 : : }
27 : :
28 : 2 : TEST_F(RssCheckObjectTests, HugeEgoObjectId)
29 : : {
30 : 1 : state::ProperResponse properResponse;
31 [ + - ]: 1 : core::RssCheck rssCheck;
32 : :
33 : 1 : worldModel.scenes[0].egoVehicle.objectId = std::numeric_limits<uint64_t>::max();
34 : :
35 [ + - - + : 1 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
36 [ + - ]: 1 : testRestrictions(properResponse.accelerationRestrictions);
37 : : }
38 : :
39 : 2 : TEST_F(RssCheckObjectTests, HugeOtherObjectId)
40 : : {
41 : 1 : state::ProperResponse properResponse;
42 [ + - ]: 1 : core::RssCheck rssCheck;
43 : :
44 : 1 : worldModel.scenes[0].object.objectId = std::numeric_limits<uint64_t>::max();
45 : :
46 [ + - - + : 1 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
47 [ + - ]: 1 : testRestrictions(properResponse.accelerationRestrictions);
48 : : }
49 : :
50 : 2 : TEST_F(RssCheckObjectTests, SameObjectId)
51 : : {
52 : 1 : state::ProperResponse properResponse;
53 [ + - ]: 1 : core::RssCheck rssCheck;
54 : :
55 : 1 : worldModel.scenes[0].object.objectId = worldModel.scenes[0].egoVehicle.objectId;
56 : :
57 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
58 : : }
59 : :
60 : 2 : TEST_F(RssCheckObjectTests, ZeroObjectId)
61 : : {
62 : 1 : state::ProperResponse properResponse;
63 [ + - ]: 1 : core::RssCheck rssCheck;
64 : :
65 : 1 : worldModel.scenes[0].object.objectId = std::numeric_limits<uint64_t>::max() + 1;
66 : :
67 [ + - - + : 1 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
68 [ + - ]: 1 : testRestrictions(properResponse.accelerationRestrictions);
69 : : }
70 : :
71 : 2 : TEST_F(RssCheckObjectTests, EgoObjectTypeValidity)
72 : : {
73 : 1 : state::ProperResponse properResponse;
74 [ + - ]: 1 : core::RssCheck rssCheck;
75 : :
76 [ + + ]: 11 : for (int32_t i = 0; i < 10; ++i)
77 : : {
78 : 10 : worldModel.timeIndex++;
79 : 10 : worldModel.scenes[0].egoVehicle.objectType = static_cast<world::ObjectType>(i);
80 [ + + ]: 10 : if (worldModel.scenes[0].egoVehicle.objectType == world::ObjectType::EgoVehicle)
81 : : {
82 [ + - - + : 1 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
83 [ + - ]: 1 : testRestrictions(properResponse.accelerationRestrictions);
84 : : }
85 : : else
86 : : {
87 [ + - - + : 9 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
88 : : }
89 : : }
90 : : }
91 : :
92 : 2 : TEST_F(RssCheckObjectTests, ObjectObjectTypeValidity)
93 : : {
94 : 1 : state::ProperResponse properResponse;
95 [ + - ]: 1 : core::RssCheck rssCheck;
96 : :
97 [ + + ]: 11 : for (int32_t i = 0; i < 10; ++i)
98 : : {
99 : 10 : worldModel.timeIndex++;
100 : 10 : worldModel.scenes[0].object.objectType = static_cast<world::ObjectType>(i);
101 : 10 : if ((worldModel.scenes[0].object.objectType == world::ObjectType::ArtificialObject)
102 [ + + ]: 9 : || (worldModel.scenes[0].object.objectType == world::ObjectType::OtherVehicle)
103 [ + + + + : 19 : || (worldModel.scenes[0].object.objectType == world::ObjectType::Pedestrian))
+ + ]
104 : : {
105 [ + - - + : 3 : ASSERT_TRUE(rssCheck.calculateProperResponse(worldModel, properResponse)) << i;
- - - - -
- - - -
- ]
106 [ + - ]: 3 : testRestrictions(properResponse.accelerationRestrictions);
107 : : }
108 : : else
109 : : {
110 [ + - - + : 7 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
111 : : }
112 : : }
113 : : }
114 : :
115 : 2 : TEST_F(RssCheckObjectTests, HugeEgoVelocity)
116 : : {
117 : 1 : state::ProperResponse properResponse;
118 [ + - ]: 1 : core::RssCheck rssCheck;
119 : :
120 : 1 : worldModel.scenes[0].egoVehicle.velocity.speedLonMin = Speed(100);
121 : 1 : worldModel.scenes[0].egoVehicle.velocity.speedLonMax = Speed(300);
122 : :
123 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
124 : : }
125 : :
126 : 2 : TEST_F(RssCheckObjectTests, HugeEgoAcceleration)
127 : : {
128 : 1 : state::ProperResponse properResponse;
129 [ + - ]: 1 : core::RssCheck rssCheck;
130 : :
131 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.accelMax = Acceleration(120);
132 : :
133 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
134 : : }
135 : :
136 : 2 : TEST_F(RssCheckObjectTests, EmptyEgoVehicleOccupiedRegion)
137 : : {
138 : 1 : state::ProperResponse properResponse;
139 [ + - ]: 1 : core::RssCheck rssCheck;
140 : :
141 : 1 : worldModel.scenes[0].egoVehicle.occupiedRegions.clear();
142 : :
143 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
144 : : }
145 : :
146 : 2 : TEST_F(RssCheckObjectTests, WrongEgoVehicleOccupiedRegion)
147 : : {
148 : 1 : state::ProperResponse properResponse;
149 [ + - ]: 1 : core::RssCheck rssCheck;
150 : :
151 : 1 : worldModel.scenes[0].egoVehicle.occupiedRegions[0].lonRange.minimum = ParametricValue(0.5);
152 : 1 : worldModel.scenes[0].egoVehicle.occupiedRegions[0].lonRange.maximum = ParametricValue(0.3);
153 : :
154 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
155 : : }
156 : :
157 : 2 : TEST_F(RssCheckObjectTests, NegativeEgoVehicleLongitudinalAcceleration)
158 : : {
159 : 1 : state::ProperResponse properResponse;
160 [ + - ]: 1 : core::RssCheck rssCheck;
161 : :
162 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.accelMax = Acceleration(-3);
163 : :
164 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
165 : : }
166 : :
167 : 2 : TEST_F(RssCheckObjectTests, IncorrectEgoVehicleLongitudinalAccelerationRange)
168 : : {
169 : 1 : state::ProperResponse properResponse;
170 [ + - ]: 1 : core::RssCheck rssCheck;
171 : :
172 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.brakeMax = Acceleration(-1);
173 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.brakeMin = Acceleration(-5);
174 : :
175 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
176 : : }
177 : :
178 : 2 : TEST_F(RssCheckObjectTests, IncorrectEgoVehicleLongitudinalAccelerationRange2)
179 : : {
180 : 1 : state::ProperResponse properResponse;
181 [ + - ]: 1 : core::RssCheck rssCheck;
182 : :
183 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.brakeMin = Acceleration(-1);
184 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLon.brakeMinCorrect = Acceleration(-5);
185 : :
186 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
187 : : }
188 : :
189 : 2 : TEST_F(RssCheckObjectTests, PositiveEgoVehicleLateralAcceleration)
190 : : {
191 : 1 : state::ProperResponse properResponse;
192 [ + - ]: 1 : core::RssCheck rssCheck;
193 : :
194 : 1 : worldModel.defaultEgoVehicleRssDynamics.alphaLat.brakeMin = Acceleration(1);
195 : :
196 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
197 : : }
198 : :
199 : 2 : TEST_F(RssCheckObjectTests, NegativeEgoVehicleLongitudinalVelocity)
200 : : {
201 : 1 : state::ProperResponse properResponse;
202 [ + - ]: 1 : core::RssCheck rssCheck;
203 : :
204 : 1 : worldModel.scenes[0].egoVehicle.velocity.speedLonMin = Speed(-3.);
205 : 1 : worldModel.scenes[0].egoVehicle.velocity.speedLonMax = Speed(0.);
206 : :
207 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
208 : : }
209 : :
210 : 2 : TEST_F(RssCheckObjectTests, NegativeEgoVehicleResponseTime)
211 : : {
212 : 1 : state::ProperResponse properResponse;
213 [ + - ]: 1 : core::RssCheck rssCheck;
214 : :
215 : 1 : worldModel.defaultEgoVehicleRssDynamics.responseTime = Duration(-5.);
216 : :
217 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
218 : : }
219 : :
220 : 2 : TEST_F(RssCheckObjectTests, ZeroEgoVehicleResponseTime)
221 : : {
222 : 1 : state::ProperResponse properResponse;
223 [ + - ]: 1 : core::RssCheck rssCheck;
224 : :
225 : 1 : worldModel.defaultEgoVehicleRssDynamics.responseTime = Duration(0);
226 : :
227 [ + - - + : 1 : ASSERT_FALSE(rssCheck.calculateProperResponse(worldModel, properResponse));
- - - - -
- - - ]
228 : : }
229 : :
230 : : } // namespace core
231 : : } // namespace rss
232 : : } // namespace ad
|