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