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 RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North : public RssSceneCreationTestWithRoute
12 : : {
13 : : /*
14 : : * | O4 |
15 : : * | |
16 : : * | |
17 : : * | O3 |___________
18 : : * |
19 : : * | O2 O1 O0
20 : : * |
21 : : * | E2 E3 E4
22 : : * | ____________
23 : : * | E1 |
24 : : * | |
25 : : * | |
26 : : * | E0 |
27 : : */
28 : : };
29 : :
30 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e0_o0)
31 : : {
32 [ + - + - : 4 : performSceneTest(
+ - + - ]
33 [ + - ]: 1 : locationSouthIncoming(),
34 [ + - ]: 2 : locationEastIncoming(),
35 : : std::initializer_list<ExpectedResultTuple>{
36 : : // here we get 2 object predictions, all leading to the opposite direction case
37 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 3u, 0u, ::ad::physics::Speed(15.2778)),
38 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 3u, 0u, ::ad::physics::Speed(15.2778))});
39 : 1 : }
40 : :
41 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e0_o1)
42 : : {
43 [ + - + - : 4 : performSceneTest(
+ - + - ]
44 [ + - ]: 1 : locationSouthIncoming(),
45 [ + - ]: 2 : locationEastEntering(),
46 : : std::initializer_list<ExpectedResultTuple>{
47 : : // here we get 2 object predictions, all leading to the opposite direction case
48 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778)),
49 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778))});
50 : 1 : }
51 : :
52 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e0_o2)
53 : : {
54 [ + - + - : 3 : performSceneTest(
+ - ]
55 [ + - ]: 1 : locationSouthIncoming(),
56 [ + - ]: 2 : locationEast2North(),
57 : : std::initializer_list<ExpectedResultTuple>{
58 : : // here we identify that the other drives in front not on our route
59 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
60 : 1 : }
61 : :
62 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e0_o3)
63 : : {
64 [ + - + - : 3 : performSceneTest(
+ - ]
65 [ + - ]: 1 : locationSouthIncoming(),
66 [ + - ]: 2 : locationNorthExiting(),
67 : : std::initializer_list<ExpectedResultTuple>{
68 : : // here we identify that the other drives in front not on our route
69 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
70 : 1 : }
71 : :
72 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e0_o4)
73 : : {
74 [ + - + - : 3 : performSceneTest(
+ - ]
75 [ + - ]: 1 : locationSouthIncoming(),
76 [ + - ]: 2 : locationNorthOutgoing(),
77 : : std::initializer_list<ExpectedResultTuple>{
78 : : // here we identify that the other drives in front not on our route
79 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
80 : 1 : }
81 : :
82 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e1_o0)
83 : : {
84 [ + - + - : 4 : performSceneTest(
+ - + - ]
85 [ + - ]: 1 : locationSouthEntering(),
86 [ + - ]: 2 : locationEastIncoming(),
87 : : std::initializer_list<ExpectedResultTuple>{
88 : : // because of the shorter connecting route, we get only 2 object predictions
89 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778)),
90 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778))});
91 : 1 : }
92 : :
93 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e1_o1)
94 : : {
95 [ + - + - : 4 : performSceneTest(
+ - + - ]
96 [ + - ]: 1 : locationSouthEntering(),
97 [ + - ]: 2 : locationEastEntering(),
98 : : std::initializer_list<ExpectedResultTuple>{
99 : : // because of the shorter connecting route, we get only 2 object predictions
100 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(15.2778)),
101 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(15.2778))});
102 : 1 : }
103 : :
104 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e1_o2)
105 : : {
106 [ + - + - : 3 : performSceneTest(
+ - ]
107 [ + - ]: 1 : locationSouthEntering(),
108 [ + - ]: 2 : locationEast2North(),
109 : : std::initializer_list<ExpectedResultTuple>{
110 : : // here we identify that the other drives in front not on our route
111 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
112 : 1 : }
113 : :
114 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e1_o3)
115 : : {
116 [ + - + - : 3 : performSceneTest(
+ - ]
117 [ + - ]: 1 : locationSouthEntering(),
118 [ + - ]: 2 : locationNorthExiting(),
119 : : std::initializer_list<ExpectedResultTuple>{
120 : : // here we identify that the other drives in front not on our route
121 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
122 : 1 : }
123 : :
124 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e1_o4)
125 : : {
126 [ + - + - : 3 : performSceneTest(
+ - ]
127 [ + - ]: 1 : locationSouthEntering(),
128 [ + - ]: 2 : locationNorthOutgoing(),
129 : : std::initializer_list<ExpectedResultTuple>{
130 : : // here we identify that the other drives in front not on our route
131 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
132 : 1 : }
133 : :
134 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e2_o0)
135 : : {
136 [ + - + - : 4 : performSceneTest(
+ - + - ]
137 [ + - ]: 1 : locationSouth2East(),
138 [ + - ]: 2 : locationEastIncoming(),
139 : : std::initializer_list<ExpectedResultTuple>{
140 : : // because of the shorter connecting route, we get only 2 object predictions
141 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778)),
142 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778))});
143 : 1 : }
144 : :
145 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e2_o1)
146 : : {
147 [ + - + - : 4 : performSceneTest(
+ - + - ]
148 [ + - ]: 1 : locationSouth2East(),
149 [ + - ]: 2 : locationEastEntering(),
150 : : std::initializer_list<ExpectedResultTuple>{
151 : : // because of the shorter connecting route, we get only 2 object predictions
152 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(15.2778)),
153 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(15.2778))});
154 : 1 : }
155 : :
156 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e2_o2)
157 : : {
158 [ + - + - : 3 : performSceneTest(
+ - ]
159 [ + - ]: 1 : locationSouth2East(),
160 [ + - ]: 2 : locationEast2North(),
161 : : std::initializer_list<ExpectedResultTuple>{
162 : : // here we identify that the other drives in front not on our route
163 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
164 : 1 : }
165 : :
166 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e2_o3)
167 : : {
168 [ + - + - : 3 : performSceneTest(
+ - ]
169 [ + - ]: 1 : locationSouth2East(),
170 [ + - ]: 2 : locationNorthExiting(),
171 : : std::initializer_list<ExpectedResultTuple>{
172 : : // here we identify that the other drives in front not on our route
173 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
174 : 1 : }
175 : :
176 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e2_o4)
177 : : {
178 [ + - + - : 3 : performSceneTest(
+ - ]
179 [ + - ]: 1 : locationSouth2East(),
180 [ + - ]: 2 : locationNorthOutgoing(),
181 : : std::initializer_list<ExpectedResultTuple>{
182 : : // here we identify that the other drives in front not on our route
183 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
184 : 1 : }
185 : :
186 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e3_o0)
187 : : {
188 [ + - + - : 3 : performSceneTest(
+ - ]
189 [ + - ]: 1 : locationEastExiting(),
190 [ + - ]: 2 : locationEastIncoming(),
191 : : std::initializer_list<ExpectedResultTuple>{
192 : : // only one situation left
193 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(12.2936))});
194 : 1 : }
195 : :
196 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e3_o1)
197 : : {
198 [ + - + - : 5 : performSceneTest(
+ - + - +
- ]
199 [ + - ]: 1 : locationEastExiting(),
200 [ + - ]: 2 : locationEastEntering(),
201 : : std::initializer_list<ExpectedResultTuple>{
202 : : // since the other is besides us, we still find the route from within the intersection
203 : : // as it is the shortest one
204 : : // we get 3 object predictions
205 : : // route length is zero, but consists of 2 segments here
206 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778)),
207 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778)),
208 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(15.2778))});
209 : 1 : }
210 : :
211 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e3_o2)
212 : : {
213 [ + - + - : 3 : performSceneTest(
+ - ]
214 [ + - ]: 1 : locationEastExiting(),
215 [ + - ]: 2 : locationEast2North(),
216 : : std::initializer_list<ExpectedResultTuple>{
217 : : // here the other is behind us
218 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
219 : 1 : }
220 : :
221 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e3_o3)
222 : : {
223 [ + - + - : 3 : performSceneTest(
+ - ]
224 [ + - ]: 1 : locationEastExiting(),
225 [ + - ]: 2 : locationNorthExiting(),
226 : : std::initializer_list<ExpectedResultTuple>{
227 : : // here the other is behind us
228 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
229 : 1 : }
230 : :
231 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e3_o4)
232 : : {
233 [ + - + - : 3 : performSceneTest(
+ - ]
234 [ + - ]: 1 : locationEastExiting(),
235 [ + - ]: 2 : locationNorthOutgoing(),
236 : : std::initializer_list<ExpectedResultTuple>{
237 : : // here the other is behind us
238 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 3u, 0u, ::ad::physics::Speed(100.))});
239 : 1 : }
240 : :
241 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e4_o0)
242 : : {
243 [ + - + - : 3 : performSceneTest(
+ - ]
244 [ + - ]: 1 : locationEastOutgoing(),
245 [ + - ]: 2 : locationEastIncoming(),
246 : : std::initializer_list<ExpectedResultTuple>{
247 : : // only one situation left
248 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 1u, 0u, ::ad::physics::Speed(12.2936))});
249 : 1 : }
250 : :
251 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e4_o1)
252 : : {
253 [ + - + - : 3 : performSceneTest(
+ - ]
254 [ + - ]: 1 : locationEastOutgoing(),
255 [ + - ]: 2 : locationEastEntering(),
256 : : std::initializer_list<ExpectedResultTuple>{
257 : : // here the other is behind us
258 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 1u, 0u, ::ad::physics::Speed(100.))});
259 : 1 : }
260 : :
261 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e4_o2)
262 : : {
263 [ + - + - : 3 : performSceneTest(
+ - ]
264 [ + - ]: 1 : locationEastOutgoing(),
265 [ + - ]: 2 : locationEast2North(),
266 : : std::initializer_list<ExpectedResultTuple>{
267 : : // here the other is behind us
268 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 1u, 0u, ::ad::physics::Speed(100.))});
269 : 1 : }
270 : :
271 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e4_o3)
272 : : {
273 [ + - + - : 3 : performSceneTest(
+ - ]
274 [ + - ]: 1 : locationEastOutgoing(),
275 [ + - ]: 2 : locationNorthExiting(),
276 : : std::initializer_list<ExpectedResultTuple>{
277 : : // here the other is behind us
278 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 1u, 0u, ::ad::physics::Speed(100.))});
279 : 1 : }
280 : :
281 : 2 : TEST_F(RssSceneCreationTestWithRouteEgoSouth2EastOtherEast2North, e4_o4)
282 : : {
283 [ + - + - : 3 : performSceneTest(
+ - ]
284 [ + - ]: 1 : locationEastOutgoing(),
285 [ + - ]: 2 : locationNorthOutgoing(),
286 : : std::initializer_list<ExpectedResultTuple>{
287 : : // here the other is behind us
288 [ + - ]: 2 : std::make_tuple(::ad::rss::situation::SituationType::NotRelevant, 1u, 0u, ::ad::physics::Speed(100.))});
289 : 1 : }
290 : :
291 : : struct RssSceneCreationTestWithoutRouteEgoSouth2EastOtherEast2North : public RssSceneCreationTestWithoutRoute
292 : : {
293 : : /*
294 : : * | O4 |
295 : : * | |
296 : : * | |
297 : : * | O3 |___________
298 : : * |
299 : : * | O2 O1 O0
300 : : * |
301 : : * | E2 E3 E4
302 : : * | ____________
303 : : * | E1 |
304 : : * | |
305 : : * | |
306 : : * | E0 |
307 : : */
308 : : };
309 : :
310 : 2 : TEST_F(RssSceneCreationTestWithoutRouteEgoSouth2EastOtherEast2North, e0_o0)
311 : : {
312 [ + - + - : 6 : performSceneTest(
+ - + - +
- + - ]
313 [ + - ]: 1 : locationSouthIncoming(),
314 [ + - ]: 2 : locationEastIncoming(),
315 : : // here we get 2 object predictions and 3 ego predictions:
316 : : std::initializer_list<ExpectedResultTuple>{
317 : : // ego-turn-right: all 2 object predictions lead to the opposite direction case
318 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 3u, 0u, ::ad::physics::Speed(100.)),
319 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 3u, 0u, ::ad::physics::Speed(100.)),
320 : : // ego-straight: object prediction 1
321 : : // object coming from right has prio
322 : 0 : std::make_tuple(
323 [ + - ]: 1 : ::ad::rss::situation::SituationType::IntersectionObjectHasPriority, 3u, 2u, ::ad::physics::Speed(100.)),
324 : : // ego-straight: object prediction 2
325 : : // object coming from right has prio
326 : 0 : std::make_tuple(
327 [ + - ]: 2 : ::ad::rss::situation::SituationType::IntersectionObjectHasPriority, 3u, 2u, ::ad::physics::Speed(100.))});
328 : 1 : }
329 : :
330 : 2 : TEST_F(RssSceneCreationTestWithoutRouteEgoSouth2EastOtherEast2North, e2_o0)
331 : : {
332 [ + - + - : 6 : performSceneTest(
+ - + - +
- + - ]
333 [ + - ]: 1 : locationSouth2East(),
334 [ + - ]: 2 : locationEastIncoming(),
335 : : // here we get 2 object predictions and 2 ego predictions:
336 : : std::initializer_list<ExpectedResultTuple>{
337 : : // ego-turn-right: all 2 object predictions lead to the opposite direction case
338 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(100.)),
339 [ + - ]: 1 : std::make_tuple(::ad::rss::situation::SituationType::OppositeDirection, 2u, 0u, ::ad::physics::Speed(100.)),
340 : : // ego-straight: object prediction 1
341 : : // first intersection not present; works because no other intersection in prediction and objects intersection is
342 : : // taken (@todo: to be fixed)
343 : : // object coming from right has prio
344 : 0 : std::make_tuple(
345 [ + - ]: 1 : ::ad::rss::situation::SituationType::IntersectionObjectHasPriority, 2u, 2u, ::ad::physics::Speed(100.)),
346 : : // ego-straight: object prediction 2
347 : : // object coming from right has prio
348 : 0 : std::make_tuple(
349 [ + - ]: 2 : ::ad::rss::situation::SituationType::IntersectionObjectHasPriority, 2u, 2u, ::ad::physics::Speed(100.))});
350 : 1 : }
351 : :
352 : 2 : TEST_F(RssSceneCreationTestWithoutRouteEgoSouth2EastOtherEast2North, e0_o4)
353 : : {
354 [ + - + - : 3 : performSceneTest(locationSouthIncoming(),
+ - + - ]
355 [ + - ]: 2 : locationNorthOutgoing(),
356 : 0 : std::initializer_list<ExpectedResultTuple>{std::make_tuple(
357 [ + - ]: 2 : ::ad::rss::situation::SituationType::SameDirection, 4u, 0u, ::ad::physics::Speed(100.))});
358 : 1 : }
359 : :
360 : : //@TODO fill in between steps of RssSceneCreationTestWithoutRouteEgoSouth2EastOtherEast2North
|