Branch data Line data Source code
1 : : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
2 : : //
3 : : // Copyright (C) 2018-2021 Intel Corporation
4 : : //
5 : : // SPDX-License-Identifier: MIT
6 : : //
7 : : // ----------------- END LICENSE BLOCK -----------------------------------
8 : :
9 : : #include <ad/map/landmark/LandmarkOperation.hpp>
10 : : #include <ad/map/point/Operation.hpp>
11 : : #include "IntersectionTrafficLightTests.hpp"
12 : : #include "MapSetup.hpp"
13 : :
14 : : namespace ad {
15 : : namespace map {
16 : :
17 : : struct IntersectionTrafficLightHirtenwegToHaid : IntersectionTrafficLightWestToSouthTest
18 : : {
19 : 1 : virtual void prepareMap() const override
20 : : {
21 : 1 : ::map_setup::prepareMapTpkPfzDrive();
22 : 1 : }
23 : :
24 : 1 : virtual point::GeoPoint getGeoFromNorth() const override
25 : : {
26 : : return point::createGeoPoint(
27 : 1 : point::Longitude(8.440391), point::Latitude(49.017906), point::Altitude(0)); // Haid-und-Neu-Strasse
28 : : }
29 : :
30 : 1 : virtual point::GeoPoint getGeoToNorth() const override
31 : : {
32 : 1 : return point::GeoPoint();
33 : : }
34 : :
35 : 1 : virtual point::GeoPoint getGeoFromSouth() const override
36 : : {
37 : 1 : return point::GeoPoint();
38 : : }
39 : 1 : virtual point::GeoPoint getGeoToSouth() const override
40 : : {
41 : : return point::createGeoPoint(
42 : 1 : point::Longitude(8.439804), point::Latitude(49.017619), point::Altitude(0)); // Haid-und-Neu-Strasse
43 : : }
44 : :
45 : 1 : virtual point::GeoPoint getGeoFromWest() const override
46 : : {
47 : : return point::createGeoPoint(
48 : 1 : point::Longitude(8.440130), point::Latitude(49.018100), point::Altitude(0)); // Hirtenweg
49 : : }
50 : :
51 : 1 : virtual point::GeoPoint getGeoToWest() const override
52 : : {
53 : 1 : return point::GeoPoint();
54 : : }
55 : :
56 : 1 : virtual point::GeoPoint getGeoFromEast() const override
57 : : {
58 : 1 : return point::GeoPoint();
59 : : }
60 : :
61 : 1 : virtual point::GeoPoint getGeoToEast() const override
62 : : {
63 : 1 : return point::GeoPoint();
64 : : }
65 : : };
66 : :
67 : 2 : TEST_F(IntersectionTrafficLightHirtenwegToHaid, basic_checks)
68 : : {
69 : 1 : point::GeoPoint geoPoint;
70 : 1 : landmark::LandmarkId id1, id2;
71 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.440227899), point::Latitude(49.01807585), point::Altitude(3.));
72 [ + - ]: 1 : id1 = landmark::uniqueLandmarkId(geoPoint);
73 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.440173867), point::Latitude(49.01804824), point::Altitude(3.));
74 [ + - ]: 1 : id2 = landmark::uniqueLandmarkId(geoPoint);
75 [ + - + - : 1 : performBasicTrafficLightsChecks({expectedTrafficLight((uint64_t)id2), expectedTrafficLight((uint64_t)id1)});
+ - + - ]
76 : 1 : }
77 : :
78 : : struct IntersectionTrafficLightHaidCrosswalk : IntersectionTrafficLightNorthToSouthTest
79 : : {
80 : 1 : virtual void prepareMap() const override
81 : : {
82 : 1 : ::map_setup::prepareMapTpkPfzDrive();
83 : 1 : }
84 : :
85 : 1 : virtual point::GeoPoint getGeoFromNorth() const override
86 : : {
87 : : return point::createGeoPoint(
88 : 1 : point::Longitude(8.438906), point::Latitude(49.017112), point::Altitude(0)); // Haid-und-Neu-Strasse
89 : : }
90 : :
91 : 1 : virtual point::GeoPoint getGeoToNorth() const override
92 : : {
93 : 1 : return point::GeoPoint();
94 : : }
95 : :
96 : 1 : virtual point::GeoPoint getGeoFromSouth() const override
97 : : {
98 : 1 : return point::GeoPoint();
99 : : }
100 : 1 : virtual point::GeoPoint getGeoToSouth() const override
101 : : {
102 : : return point::createGeoPoint(
103 : 1 : point::Longitude(8.4385758), point::Latitude(49.0169274), point::Altitude(0)); // Haid-und-Neu-Strasse
104 : : }
105 : :
106 : 1 : virtual point::GeoPoint getGeoFromWest() const override
107 : : {
108 : 1 : return point::GeoPoint();
109 : : }
110 : :
111 : 1 : virtual point::GeoPoint getGeoToWest() const override
112 : : {
113 : 1 : return point::GeoPoint();
114 : : }
115 : :
116 : 1 : virtual point::GeoPoint getGeoFromEast() const override
117 : : {
118 : 1 : return point::GeoPoint();
119 : : }
120 : :
121 : 1 : virtual point::GeoPoint getGeoToEast() const override
122 : : {
123 : 1 : return point::GeoPoint();
124 : : }
125 : : };
126 : :
127 : 2 : TEST_F(IntersectionTrafficLightHaidCrosswalk, basic_checks)
128 : : {
129 : 1 : point::GeoPoint geoPoint;
130 : 1 : landmark::LandmarkId id1, id2;
131 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.438836635), point::Latitude(49.01700919), point::Altitude(3.));
132 [ + - ]: 1 : id1 = landmark::uniqueLandmarkId(geoPoint);
133 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.438765768), point::Latitude(49.01706402), point::Altitude(3.));
134 [ + - ]: 1 : id2 = landmark::uniqueLandmarkId(geoPoint);
135 [ + - + - : 1 : performBasicTrafficLightsChecks({expectedTrafficLight((uint64_t)id1), expectedTrafficLight((uint64_t)id2)});
+ - + - ]
136 : 1 : }
137 : :
138 : : struct IntersectionTrafficLightHaidToOstring : IntersectionTrafficLightNorthToEastTest
139 : : {
140 : 1 : virtual void prepareMap() const override
141 : : {
142 : 1 : ::map_setup::prepareMapTpkPfzDrive();
143 : 1 : }
144 : :
145 : 1 : virtual point::GeoPoint getGeoFromNorth() const override
146 : : {
147 : : return point::createGeoPoint(
148 : 1 : point::Longitude(8.436480), point::Latitude(49.015874), point::Altitude(0.)); // Haid-und-Neu-Strasse
149 : : }
150 : :
151 : 1 : virtual point::GeoPoint getGeoToNorth() const override
152 : : {
153 : : return point::createGeoPoint(
154 : 1 : point::Longitude(8.436519), point::Latitude(49.015797), point::Altitude(0.)); // Haid-und-Neu-Strasse
155 : : }
156 : :
157 : 1 : virtual point::GeoPoint getGeoFromSouth() const override
158 : : {
159 : : return point::createGeoPoint(
160 : 1 : point::Longitude(8.435849), point::Latitude(49.015530), point::Altitude(0.)); // Haid-und-Neu-Strasse
161 : : }
162 : 1 : virtual point::GeoPoint getGeoToSouth() const override
163 : : {
164 : : return point::createGeoPoint(
165 : 1 : point::Longitude(8.435822), point::Latitude(49.015617), point::Altitude(0.)); // Haid-und-Neu-Strasse
166 : : }
167 : :
168 : 1 : virtual point::GeoPoint getGeoFromWest() const override
169 : : {
170 : 1 : return point::GeoPoint();
171 : : }
172 : :
173 : 1 : virtual point::GeoPoint getGeoToWest() const override
174 : : {
175 : 1 : return point::GeoPoint();
176 : : }
177 : :
178 : 1 : virtual point::GeoPoint getGeoFromEast() const override
179 : : {
180 : : return point::createGeoPoint(
181 : 1 : point::Longitude(8.436399), point::Latitude(49.015511), point::Altitude(0.)); // Ostring
182 : : }
183 : :
184 : 1 : virtual point::GeoPoint getGeoToEast() const override
185 : : {
186 : : return point::createGeoPoint(
187 : 1 : point::Longitude(8.436145), point::Latitude(49.015490), point::Altitude(0.)); // Ostring
188 : : }
189 : :
190 : 2 : virtual lane::LaneIdSet expectedIncomingLanesWithLowerPriority() const override
191 : : {
192 [ + - + - : 6 : return createUnorderedLaneIdSet({getIncomingLanesSouth(), getIncomingLanesEast()});
+ + - - ]
193 : : }
194 : :
195 : 2 : virtual lane::LaneIdSet expectedIncomingLanesWithHigherPriority() const override
196 : : {
197 : 2 : return lane::LaneIdSet();
198 : : }
199 : : };
200 : :
201 : 2 : TEST_F(IntersectionTrafficLightHaidToOstring, basic_checks)
202 : : {
203 : 1 : point::GeoPoint geoPoint;
204 : 1 : landmark::LandmarkId id1;
205 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.436353022), point::Latitude(49.01579163), point::Altitude(3.));
206 [ + - ]: 1 : id1 = landmark::uniqueLandmarkId(geoPoint);
207 [ + - + - : 1 : performBasicTrafficLightsChecks({expectedTrafficLight((uint64_t)id1)});
+ - ]
208 : 1 : }
209 : :
210 : : struct IntersectionTrafficLightElfNordtangente : IntersectionTrafficLightSouthToNorthTest
211 : : {
212 : 1 : virtual void prepareMap() const override
213 : : {
214 : 1 : ::map_setup::prepareMapTpkPfzDrive();
215 : 1 : }
216 : :
217 : 1 : virtual point::GeoPoint getGeoFromNorth() const override
218 : : {
219 : : return point::createGeoPoint(
220 : 1 : point::Longitude(8.45743), point::Latitude(49.01878), point::Altitude(0)); // Elfmorgenbruchstrasse
221 : : }
222 : :
223 : 1 : virtual point::GeoPoint getGeoToNorth() const override
224 : : {
225 : : return point::createGeoPoint(
226 : 1 : point::Longitude(8.45748), point::Latitude(49.01868), point::Altitude(0)); // Elfmorgenbruchstrasse
227 : : }
228 : :
229 : 1 : virtual point::GeoPoint getGeoFromSouth() const override
230 : : {
231 : : return point::createGeoPoint(
232 : 1 : point::Longitude(8.45750), point::Latitude(49.01825), point::Altitude(0)); // Elfmorgenbruchstrasse
233 : : }
234 : 1 : virtual point::GeoPoint getGeoToSouth() const override
235 : : {
236 : : return point::createGeoPoint(
237 : 1 : point::Longitude(8.45743), point::Latitude(49.01844), point::Altitude(0)); // Elfmorgenbruchstrasse
238 : : }
239 : :
240 : 1 : virtual point::GeoPoint getGeoFromWest() const override
241 : : {
242 : 1 : return point::GeoPoint();
243 : : }
244 : :
245 : 1 : virtual point::GeoPoint getGeoToWest() const override
246 : : {
247 : 1 : return point::GeoPoint();
248 : : }
249 : :
250 : 1 : virtual point::GeoPoint getGeoFromEast() const override
251 : : {
252 : : return point::createGeoPoint(
253 : 1 : point::Longitude(8.45777), point::Latitude(49.01855), point::Altitude(0)); // Nordtangente
254 : : }
255 : :
256 : 1 : virtual point::GeoPoint getGeoToEast() const override
257 : : {
258 : : return point::createGeoPoint(
259 : 1 : point::Longitude(8.45768), point::Latitude(49.01852), point::Altitude(0)); // Nordtangente
260 : : }
261 : : };
262 : :
263 : 2 : TEST_F(IntersectionTrafficLightElfNordtangente, basic_checks)
264 : : {
265 : 1 : point::GeoPoint geoPoint;
266 : 1 : landmark::LandmarkId id1, id2, id3;
267 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.457469344), point::Latitude(49.01830002), point::Altitude(5.));
268 [ + - ]: 1 : id1 = landmark::uniqueLandmarkId(geoPoint);
269 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.457510429), point::Latitude(49.01830064), point::Altitude(5.));
270 [ + - ]: 1 : id2 = landmark::uniqueLandmarkId(geoPoint);
271 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.457585752), point::Latitude(49.01830179), point::Altitude(3.));
272 [ + - ]: 1 : id3 = landmark::uniqueLandmarkId(geoPoint);
273 [ + - + - ]: 1 : performBasicTrafficLightsChecks(
274 [ + - + - : 1 : {expectedTrafficLight((uint64_t)id1), expectedTrafficLight((uint64_t)id2), expectedTrafficLight((uint64_t)id3)});
+ - ]
275 : 1 : }
276 : :
277 : : struct IntersectionTrafficLightElfToRusch : IntersectionTrafficLightSouthToWestTest
278 : : {
279 : 1 : virtual void prepareMap() const override
280 : : {
281 : 1 : ::map_setup::prepareMapTpkPfzDrive();
282 : 1 : }
283 : :
284 : 1 : virtual point::GeoPoint getGeoFromNorth() const override
285 : : {
286 : : return point::createGeoPoint(
287 : 1 : point::Longitude(8.45787), point::Latitude(49.02084), point::Altitude(0)); // An der Tagweide
288 : : }
289 : :
290 : 1 : virtual point::GeoPoint getGeoToNorth() const override
291 : : {
292 : : return point::createGeoPoint(
293 : 1 : point::Longitude(8.45782), point::Latitude(49.02073), point::Altitude(0)); // An der Tagweide
294 : : }
295 : :
296 : 1 : virtual point::GeoPoint getGeoFromSouth() const override
297 : : {
298 : : return point::createGeoPoint(
299 : 1 : point::Longitude(8.45765), point::Latitude(49.02046), point::Altitude(0)); // Elfmorgenbruchstrasse
300 : : }
301 : 1 : virtual point::GeoPoint getGeoToSouth() const override
302 : : {
303 : : return point::createGeoPoint(
304 : 1 : point::Longitude(8.45758), point::Latitude(49.02055), point::Altitude(0)); // Elfmorgenbruchstrasse
305 : : }
306 : :
307 : 1 : virtual point::GeoPoint getGeoFromWest() const override
308 : : {
309 : : return point::createGeoPoint(
310 : 1 : point::Longitude(8.45746), point::Latitude(49.02073), point::Altitude(0)); // Ruschgraben
311 : : }
312 : :
313 : 1 : virtual point::GeoPoint getGeoToWest() const override
314 : : {
315 : : return point::createGeoPoint(
316 : 1 : point::Longitude(8.45755), point::Latitude(49.02073), point::Altitude(0)); // Ruschgraben
317 : : }
318 : :
319 : 1 : virtual point::GeoPoint getGeoFromEast() const override
320 : : {
321 : : return point::createGeoPoint(
322 : 1 : point::Longitude(8.45807), point::Latitude(49.02059), point::Altitude(0)); // Am Storrenacker
323 : : }
324 : :
325 : 1 : virtual point::GeoPoint getGeoToEast() const override
326 : : {
327 : : return point::createGeoPoint(
328 : 1 : point::Longitude(8.45795), point::Latitude(49.02057), point::Altitude(0)); // Am Storrenacker
329 : : }
330 : : };
331 : :
332 : 2 : TEST_F(IntersectionTrafficLightElfToRusch, basic_checks)
333 : : {
334 : 1 : point::GeoPoint geoPoint;
335 : 1 : landmark::LandmarkId id1, id2;
336 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.457552561), point::Latitude(49.02053703), point::Altitude(3.));
337 [ + - ]: 1 : id1 = landmark::uniqueLandmarkId(geoPoint);
338 : 1 : geoPoint = point::createGeoPoint(point::Longitude(8.45766481), point::Latitude(49.02051672), point::Altitude(5.));
339 [ + - ]: 1 : id2 = landmark::uniqueLandmarkId(geoPoint);
340 [ + - + - : 1 : performBasicTrafficLightsChecks({expectedTrafficLight((uint64_t)id1), expectedTrafficLight((uint64_t)id2)});
+ - + - ]
341 : 1 : }
342 : :
343 : : } // namespace map
344 : : } // namespace ad
|