]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // Boost.Geometry (aka GGL, Generic Geometry Library) |
2 | ||
3 | // Copyright (c) 2014-2015 Oracle and/or its affiliates. | |
4 | ||
5 | // Licensed under the Boost Software License version 1.0. | |
6 | // http://www.boost.org/users/license.html | |
7 | ||
8 | // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle | |
9 | ||
10 | #include <iostream> | |
11 | ||
12 | #ifndef BOOST_TEST_MODULE | |
13 | #define BOOST_TEST_MODULE test_sym_difference_linear_linear | |
14 | #endif | |
15 | ||
16 | #ifdef BOOST_GEOMETRY_TEST_DEBUG | |
17 | #define BOOST_GEOMETRY_DEBUG_TURNS | |
18 | #define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER | |
19 | #endif | |
20 | ||
21 | #include <boost/test/included/unit_test.hpp> | |
22 | ||
23 | #include "test_sym_difference_linear_linear.hpp" | |
24 | ||
25 | #include <boost/geometry/geometries/linestring.hpp> | |
26 | #include <boost/geometry/geometries/multi_linestring.hpp> | |
27 | #include <boost/geometry/algorithms/sym_difference.hpp> | |
28 | ||
29 | typedef bg::model::point<double,2,bg::cs::cartesian> point_type; | |
30 | typedef bg::model::segment<point_type> segment_type; | |
31 | typedef bg::model::linestring<point_type> linestring_type; | |
32 | typedef bg::model::multi_linestring<linestring_type> multi_linestring_type; | |
33 | ||
34 | ||
35 | ||
36 | //=========================================================================== | |
37 | //=========================================================================== | |
38 | //=========================================================================== | |
39 | ||
40 | ||
41 | BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring ) | |
42 | { | |
43 | #ifdef BOOST_GEOMETRY_TEST_DEBUG | |
44 | std::cout << std::endl << std::endl << std::endl; | |
45 | std::cout << "*** LINESTRING / LINESTRING SYMMETRIC DIFFERENCE ***" << std::endl; | |
46 | std::cout << std::endl; | |
47 | #endif | |
48 | ||
49 | typedef linestring_type L; | |
50 | typedef multi_linestring_type ML; | |
51 | ||
52 | typedef test_sym_difference_of_geometries<L, L, ML> tester; | |
53 | ||
54 | tester::apply | |
55 | (from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"), | |
56 | from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"), | |
57 | from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,3 2),\ | |
58 | (0 2,1 1),(2 1,3 0))"), | |
59 | "llsdf00"); | |
60 | ||
61 | tester::apply | |
62 | (from_wkt<L>("LINESTRING(0 0,5 0)"), | |
63 | from_wkt<L>("LINESTRING(3 0,4 0)"), | |
64 | from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,5 0))"), | |
65 | "llsdf01"); | |
66 | ||
67 | tester::apply | |
68 | (from_wkt<L>("LINESTRING(0 0,4 0)"), | |
69 | from_wkt<L>("LINESTRING(3 0,6 0)"), | |
70 | from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,6 0))"), | |
71 | "llsdf01-1"); | |
72 | ||
73 | tester::apply | |
74 | (from_wkt<L>("LINESTRING(0 0,6 0)"), | |
75 | from_wkt<L>("LINESTRING(0 0,4 0)"), | |
76 | from_wkt<ML>("MULTILINESTRING((4 0,6 0))"), | |
77 | "llsdf01-2"); | |
78 | ||
79 | tester::apply | |
80 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
81 | from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"), | |
82 | from_wkt<ML>("MULTILINESTRING((0 0,4 0),(5 0,20 0),\ | |
83 | (0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"), | |
84 | "llsdf01-3"); | |
85 | ||
86 | tester::apply | |
87 | (from_wkt<L>("LINESTRING(-20 0,20 0)"), | |
88 | from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"), | |
89 | from_wkt<ML>("MULTILINESTRING((-20 0,4 0),(5 0,20 0),\ | |
90 | (0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"), | |
91 | "llsdf01-4"); | |
92 | ||
93 | tester::apply | |
94 | (from_wkt<L>("LINESTRING(0 0,4 0)"), | |
95 | from_wkt<L>("LINESTRING(2 0,4 0)"), | |
96 | from_wkt<ML>("MULTILINESTRING((0 0,2 0))"), | |
97 | "llsdf01-5"); | |
98 | ||
99 | tester::apply | |
100 | (from_wkt<L>("LINESTRING(0 0,2 0)"), | |
101 | from_wkt<L>("LINESTRING(4 0,5 0)"), | |
102 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,5 0))"), | |
103 | "llsdf01-6"); | |
104 | ||
105 | tester::apply | |
106 | (from_wkt<L>("LINESTRING(0 0,2 0)"), | |
107 | from_wkt<L>("LINESTRING(2 0,5 0)"), | |
108 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(2 0,5 0))"), | |
109 | "llsdf01-7"); | |
110 | ||
111 | tester::apply | |
112 | (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"), | |
113 | from_wkt<L>("LINESTRING(3 0,5 0)"), | |
114 | from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"), | |
115 | "llsdf01-8"); | |
116 | ||
117 | tester::apply | |
118 | (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"), | |
119 | from_wkt<L>("LINESTRING(3 0,4 0,5 0)"), | |
120 | from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"), | |
121 | "llsdf01-9"); | |
122 | ||
123 | tester::apply | |
124 | (from_wkt<L>("LINESTRING(0 0,6 0)"), | |
125 | from_wkt<L>("LINESTRING(2 0,4 0,5 0)"), | |
126 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,6 0))"), | |
127 | "llsdf01-10"); | |
128 | ||
129 | tester::apply | |
130 | (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"), | |
131 | from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"), | |
132 | from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5),(10 5,15 0),\ | |
133 | (-1 6,0 5,5 5),(10 5,15 5))"), | |
134 | "llsdf02"); | |
135 | ||
136 | tester::apply | |
137 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"), | |
138 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
139 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
140 | (-1 0,0 0),(1 0,15 0),(20 0,30 0))"), | |
141 | "llsdf03"); | |
142 | ||
143 | tester::apply | |
144 | (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"), | |
145 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
146 | from_wkt<ML>("MULTILINESTRING((1 0,5 5,10 5,15 0),\ | |
147 | (-1 0,0 0),(1 0,15 0),(20 0,30 0))"), | |
148 | "llsdf04"); | |
149 | ||
150 | tester::apply | |
151 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"), | |
152 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
153 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
154 | (20 0,25 1),(-1 0,0 0),(1 0,15 0),(20 0,30 0))"), | |
155 | "llsdf05"); | |
156 | ||
157 | tester::apply | |
158 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"), | |
159 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
160 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
161 | (-1 0,0 0),(1 0,15 0))"), | |
162 | "llsdf05-1"); | |
163 | ||
164 | tester::apply | |
165 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), | |
166 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
167 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
168 | (30 0,31 0),(-1 0,0 0),(1 0,15 0))"), | |
169 | "llsdf06"); | |
170 | ||
171 | tester::apply | |
172 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), | |
173 | from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"), | |
174 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
175 | (30 0,31 0),(-1 0,0 0),(1 0,15 0))"), | |
176 | "llsdf07"); | |
177 | ||
178 | tester::apply | |
179 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), | |
180 | from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"), | |
181 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
182 | (30 0,31 0),(-1 0,0 0),(1 0,15 0))"), | |
183 | "llsdf08"); | |
184 | ||
185 | tester::apply | |
186 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"), | |
187 | from_wkt<L>("LINESTRING(-1 0,30 0)"), | |
188 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
189 | (30 0,31 1),(-1 0,0 0),(1 0,15 0))"), | |
190 | "llsdf09"); | |
191 | ||
192 | tester::apply | |
193 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"), | |
194 | from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"), | |
195 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\ | |
196 | (30 0,31 1),(-1 -1,0 0),(1 0,2 1,3 0,15 0))"), | |
197 | "llsdf10"); | |
198 | ||
199 | tester::apply | |
200 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\ | |
201 | 30 0,31 1)"), | |
202 | from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"), | |
203 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\ | |
204 | (4 0,5 5,10 5,15 0),(30 0,31 1),(-1 -1,0 0),\ | |
205 | (2 0,2.5 1,3 0),(4 0,15 0))"), | |
206 | "llsdf11"); | |
207 | ||
208 | tester::apply | |
209 | (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"), | |
210 | from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"), | |
211 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\ | |
212 | (4 0,5 5,10 5,15 0),(30 0,31 0),(-1 -1,0 0),\ | |
213 | (2 0,2.5 1,3 0),(4 0,15 0))"), | |
214 | "llsdf11-1"); | |
215 | ||
216 | tester::apply | |
217 | (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"), | |
218 | from_wkt<L>("LINESTRING(0 0,2 0,3 1)"), | |
219 | from_wkt<ML>("MULTILINESTRING()"), | |
220 | "llsdf12"); | |
221 | ||
222 | tester::apply | |
223 | (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"), | |
224 | from_wkt<L>("LINESTRING(3 1,2 0,0 0)"), | |
225 | from_wkt<ML>("MULTILINESTRING()"), | |
226 | "llsdf12-1"); | |
227 | ||
228 | tester::apply | |
229 | (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"), | |
230 | from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"), | |
231 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(4 0,5 10))"), | |
232 | "llsdf13"); | |
233 | ||
234 | tester::apply | |
235 | (from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"), | |
236 | from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"), | |
237 | from_wkt<ML>("MULTILINESTRING()"), | |
238 | "llsdf14"); | |
239 | ||
240 | tester::apply | |
241 | (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"), | |
242 | from_wkt<L>("LINESTRING(1 0,2 1,3 5)"), | |
243 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(3 5,4 0))"), | |
244 | "llsdf15"); | |
245 | ||
246 | tester::apply | |
247 | (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"), | |
248 | from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"), | |
249 | from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(3 2,4 5))"), | |
250 | "llsdf16"); | |
251 | ||
252 | tester::apply | |
253 | (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"), | |
254 | from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"), | |
255 | from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(4 5,3 2))"), | |
256 | "llsdf16-r"); | |
257 | ||
258 | tester::apply | |
259 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"), | |
260 | from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"), | |
261 | from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(25 1,30 1),\ | |
262 | (1 1,2 0,3 1,20 1))"), | |
263 | "llsdf17"); | |
264 | ||
265 | tester::apply | |
266 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"), | |
267 | from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"), | |
268 | from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0),\ | |
269 | (1 1,2 0,3 1,20 1,25 0))"), | |
270 | "llsdf18"); | |
271 | ||
272 | tester::apply | |
273 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
274 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"), | |
275 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
276 | (5 0,20 1,4 1,4 0,5 1))"), | |
277 | "llsdf19"); | |
278 | ||
279 | tester::apply | |
280 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
281 | from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"), | |
282 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
283 | (5 1,4 0,4 1,20 1,5 0))"), | |
284 | "llsdf19-r"); | |
285 | ||
286 | tester::apply | |
287 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
288 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"), | |
289 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
290 | (5 0,20 1,4 1,4 0))"), | |
291 | "llsdf19a"); | |
292 | ||
293 | tester::apply | |
294 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
295 | from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"), | |
296 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
297 | (4 0,4 1,20 1,5 0))"), | |
298 | "llsdf19a-r"); | |
299 | ||
300 | tester::apply | |
301 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
302 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"), | |
303 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
304 | (5 0,20 1,4 1,4 0))"), | |
305 | "llsdf19b"); | |
306 | ||
307 | tester::apply | |
308 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
309 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"), | |
310 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
311 | (5 0,20 1,4 1,4 0),(5 0,6 1))"), | |
312 | "llsdf19c"); | |
313 | ||
314 | tester::apply | |
315 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
316 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"), | |
317 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
318 | (5 0,20 1,4 1,4 0))"), | |
319 | "llsdf19d"); | |
320 | ||
321 | tester::apply | |
322 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
323 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"), | |
324 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
325 | (5 0,20 1,4 1,4 0),(3 0,3 1))"), | |
326 | "llsdf19e"); | |
327 | ||
328 | tester::apply | |
329 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
330 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"), | |
331 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
332 | (5 0,20 1,4 1,4 0),(5 0,5 1))"), | |
333 | "llsdf19f"); | |
334 | ||
335 | tester::apply | |
336 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
337 | from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"), | |
338 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
339 | (5 1,5 0),(4 0,4 1,20 1,5 0))"), | |
340 | "llsdf19f-r"); | |
341 | ||
342 | tester::apply | |
343 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
344 | from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"), | |
345 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
346 | (5 0,20 1,4 1,5 0,5 1))"), | |
347 | "llsdf19g"); | |
348 | ||
349 | tester::apply | |
350 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
351 | from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"), | |
352 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ | |
353 | (5 1,5 0,4 1,20 1,5 0))"), | |
354 | "llsdf19g-r"); | |
355 | ||
356 | tester::apply | |
357 | (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"), | |
358 | from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"), | |
359 | from_wkt<ML>("MULTILINESTRING((0 0,20 0),(25 0,30 0,30 30,10 30),\ | |
360 | (10 0,10 -10,15 0,20 0),(25 0,35 0),\ | |
361 | (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"), | |
362 | "llsdf20"); | |
363 | ||
364 | tester::apply | |
365 | (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"), | |
366 | from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"), | |
367 | from_wkt<ML>("MULTILINESTRING((0 0,15 0),(30 0,30 30,10 30),\ | |
368 | (10 0,10 -10,15 0),(5 5,10 0),(10 30,20 0),\ | |
369 | (25 0,25 25,50 0,40 0))"), | |
370 | "llsdf20a"); | |
371 | ||
372 | tester::apply | |
373 | (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"), | |
374 | from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"), | |
375 | from_wkt<ML>("MULTILINESTRING((0 0,18 0),(20 0,30 0),\ | |
376 | (2 2,5 -1,15 2,18 0))"), | |
377 | "llsdf21" | |
378 | ); | |
379 | ||
380 | tester::apply | |
381 | (from_wkt<L>("LINESTRING(0 -3,5 4,6 6,-3 2,-3 0,-3 -10,9 -2,\ | |
382 | 9 5,5 -5,-4 -8,9 0)"), | |
383 | from_wkt<L>("LINESTRING(-3 6,-3 0,-3 5,2 -3,-6 10,5 0,\ | |
384 | 2 8,-6 1,10 -6)"), | |
385 | from_wkt<ML>("MULTILINESTRING((0 -3,5 4,6 6,-3 2),\ | |
386 | (-3 0,-3 -10,9 -2,9 5,5 -5,-4 -8,9 0),(-3 6,-3 2),\ | |
387 | (-3 2,-3 5,2 -3,-6 10,5 0,2 8,-6 1,10 -6))"), | |
388 | "llsdf22" | |
389 | ); | |
390 | } | |
391 | ||
392 | ||
393 | ||
394 | BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring ) | |
395 | { | |
396 | #ifdef BOOST_GEOMETRY_TEST_DEBUG | |
397 | std::cout << std::endl << std::endl << std::endl; | |
398 | std::cout << "*** LINESTRING / MULTILINESTRING SYMMETRIC DIFFERENCE ***" | |
399 | << std::endl; | |
400 | std::cout << std::endl; | |
401 | #endif | |
402 | ||
403 | typedef linestring_type L; | |
404 | typedef multi_linestring_type ML; | |
405 | ||
406 | typedef test_sym_difference_of_geometries<L, ML, ML> tester; | |
407 | ||
408 | // disjoint linestrings | |
409 | tester::apply | |
410 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"), | |
411 | from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"), | |
412 | from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),\ | |
413 | (1 1,2 2,4 3),(1 1,2 2,5 3))"), | |
414 | "lmlsdf01" | |
415 | ); | |
416 | ||
417 | tester::apply | |
418 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"), | |
419 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"), | |
420 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
421 | (1 1,2 0),(1 1,3 0))"), | |
422 | "lmlsdf02" | |
423 | ); | |
424 | ||
425 | tester::apply | |
426 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"), | |
427 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"), | |
428 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\ | |
429 | (1 1,2 0),(1 1,3 0))"), | |
430 | "lmlsdf03" | |
431 | ); | |
432 | ||
433 | tester::apply | |
434 | (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"), | |
435 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"), | |
436 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
437 | (1 1,2 0))"), | |
438 | "lmlsdf04" | |
439 | ); | |
440 | ||
441 | tester::apply | |
442 | (from_wkt<L>("LINESTRING(0 0,101 0)"), | |
443 | from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"), | |
444 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"), | |
445 | "lmlsdf07" | |
446 | ); | |
447 | ||
448 | tester::apply | |
449 | (from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"), | |
450 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\ | |
451 | (19 -1,20 0,101 0,200 -1))"), | |
452 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(-1 -1,0 0),\ | |
453 | (19 -1,20 0),(101 0,200 -1))"), | |
454 | "lmlsdf07a" | |
455 | ); | |
456 | ||
457 | tester::apply | |
458 | (from_wkt<L>("LINESTRING(0 0,101 0)"), | |
459 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\ | |
460 | (19 -1,20 0,101 0,200 -1))"), | |
461 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0),(19 -1,20 0),\ | |
462 | (101 0,200 -1))"), | |
463 | "lmlsdf07b" | |
464 | ); | |
465 | ||
466 | tester::apply | |
467 | (from_wkt<L>("LINESTRING(0 0,101 0)"), | |
468 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\ | |
469 | (-1 -1,1 0,101 0,200 -1))"), | |
470 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(0 1,1 1,2 0),\ | |
471 | (-1 -1,1 0),(101 0,200 -1))"), | |
472 | "lmlsdf08" | |
473 | ); | |
474 | ||
475 | tester::apply | |
476 | (from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"), | |
477 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\ | |
478 | (-1 -1,1 0,101 0,200 -1))"), | |
479 | from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0),\ | |
480 | (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"), | |
481 | "lmlsdf09" | |
482 | ); | |
483 | ||
484 | tester::apply | |
485 | (from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"), | |
486 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\ | |
487 | (-1 -1,1 0,101 0,200 -1))"), | |
488 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0),\ | |
489 | (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\ | |
490 | (101 0,200 -1))"), | |
491 | "lmlsdf10" | |
492 | ); | |
493 | ||
494 | tester::apply | |
495 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
496 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
497 | (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\ | |
498 | (3 1,4 0,16 0,17 1))"), | |
499 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
500 | (0 1,1 0),(19 0,20 1),(1 1,2 0),(18 0,19 1),\ | |
501 | (2 1,3 0),(17 0,18 1),(3 1,4 0),(16 0,17 1))"), | |
502 | "lmlsdf12" | |
503 | ); | |
504 | ||
505 | tester::apply | |
506 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
507 | from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\ | |
508 | (2 0,18 0,19 1),(3 0,17 0,18 1),\ | |
509 | (4 0,16 0,17 1))"), | |
510 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
511 | (19 0,20 1),(18 0,19 1),(17 0,18 1),(16 0,17 1))"), | |
512 | "lmlsdf13" | |
513 | ); | |
514 | ||
515 | tester::apply | |
516 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
517 | from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\ | |
518 | (4 0,16 0))"), | |
519 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"), | |
520 | "lmlsdf13a" | |
521 | ); | |
522 | ||
523 | tester::apply | |
524 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
525 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\ | |
526 | 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"), | |
527 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
528 | (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\ | |
529 | (17 0,18 1,17 1,16 0),(4 0,3 1))"), | |
530 | "lmlsdf14" | |
531 | ); | |
532 | ||
533 | tester::apply | |
534 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
535 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
536 | (2 2,4 2,6 0))"), | |
537 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
538 | (0 1,1 0),(19 0,20 1),(2 2,4 2,6 0))"), | |
539 | "lmlsdf15" | |
540 | ); | |
541 | ||
542 | tester::apply | |
543 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
544 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
545 | (6 0,4 2,2 2))"), | |
546 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
547 | (0 1,1 0),(19 0,20 1),(6 0,4 2,2 2))"), | |
548 | "lmlsdf15a" | |
549 | ); | |
550 | ||
551 | tester::apply | |
552 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
553 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
554 | (2 2,4 2,5 0,6 0))"), | |
555 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
556 | (0 1,1 0),(19 0,20 1),(2 2,4 2,5 0))"), | |
557 | "lmlsdf16" | |
558 | ); | |
559 | ||
560 | tester::apply | |
561 | (from_wkt<L>("LINESTRING(0 0,20 0)"), | |
562 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
563 | (6 0,5 0,4 2,2 2))"), | |
564 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
565 | (0 1,1 0),(19 0,20 1),(5 0,4 2,2 2))"), | |
566 | "lmlsdf16a" | |
567 | ); | |
568 | ||
569 | tester::apply | |
570 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
571 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
572 | (2 2,4 0,5 2,20 2,25 0))"), | |
573 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
574 | (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0))"), | |
575 | "lmlsdf17" | |
576 | ); | |
577 | ||
578 | tester::apply | |
579 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
580 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
581 | (2 2,4 0,5 2,20 2,25 0,26 2))"), | |
582 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
583 | (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0,26 2))"), | |
584 | "lmlsdf17a" | |
585 | ); | |
586 | ||
587 | tester::apply | |
588 | (from_wkt<L>("LINESTRING(0 0,30 0)"), | |
589 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
590 | (2 2,5 -1,15 2,18 0))"), | |
591 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
592 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"), | |
593 | "lmlsdf18" | |
594 | ); | |
595 | ||
596 | tester::apply | |
597 | (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"), | |
598 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
599 | (2 2,5 -1,15 2,18 0))"), | |
600 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
601 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"), | |
602 | "lmlsdf18a" | |
603 | ); | |
604 | ||
605 | tester::apply | |
606 | (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"), | |
607 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
608 | (2 2,5 -1,15 2,18 0,20 0))"), | |
609 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(20 0,30 0),\ | |
610 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"), | |
611 | "lmlsdf18b" | |
612 | ); | |
613 | ||
614 | tester::apply | |
615 | (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"), | |
616 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
617 | (2 2,5 -1,15 2,25 0,26 0))"), | |
618 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,25 0),(26 0,30 0),\ | |
619 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,25 0))"), | |
620 | "lmlsdf18c" | |
621 | ); | |
622 | ||
623 | tester::apply | |
624 | (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"), | |
625 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
626 | (2 2,5 -1,15 2,25 0,21 0))"), | |
627 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,21 0),(25 0,30 0),\ | |
628 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,25 0))"), | |
629 | "lmlsdf18d" | |
630 | ); | |
631 | ||
92f5a8d4 | 632 | #ifdef BOOST_GEOMETRY_TEST_FAILURES |
7c673cae FG |
633 | tester::apply |
634 | (from_wkt<L>("LINESTRING(1 5,4 2,1 -1.1,1 6,1 189.7654,2 5,-0.7654 3)"), | |
635 | from_wkt<ML>("MULTILINESTRING((2 5,-0.7654 2),\ | |
636 | (-1032.34324 4,1 5,9 7,3 9,0.2 5,1 -0.3),\ | |
637 | (1 0.9,1 6,1 -0.6,2.232432 -0.7654,0.9 3,1 5,\ | |
638 | -0.7654 9,3 0.1,9 0,-6 8,-0.7 8,0 1,-1032.34324 0))"), | |
639 | from_wkt<ML>("MULTILINESTRING((2 5,-0.7654 2),\ | |
640 | (-1032.34324 4,1 5,9 7,3 9,0.2 5,1 -0.3),\ | |
641 | (1 -0.6,2.232432 -0.7654,0.9 3,1 5,-0.7654 9,\ | |
642 | 3 0.1,9 0,-6 8,-0.7 8,0 1,-1032.34324 0),\ | |
643 | (1 5,4 2,1 -1.1,1 -0.6),\ | |
644 | (1 6,1 189.7654,2 5,-0.7654 3))"), | |
645 | "lmlsdf19", | |
646 | 1e-10 | |
647 | ); | |
648 | #endif | |
649 | } | |
650 | ||
651 | ||
652 | ||
653 | ||
654 | BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_linestring ) | |
655 | { | |
656 | #ifdef BOOST_GEOMETRY_TEST_DEBUG | |
657 | std::cout << std::endl << std::endl << std::endl; | |
658 | std::cout << "*** MULTILINESTRING / LINESTRING SYMMETRIC DIFFERENCE ***" | |
659 | << std::endl; | |
660 | std::cout << std::endl; | |
661 | #endif | |
662 | ||
663 | typedef linestring_type L; | |
664 | typedef multi_linestring_type ML; | |
665 | ||
666 | typedef test_sym_difference_of_geometries<ML, L, ML> tester; | |
667 | ||
668 | // disjoint linestrings | |
669 | tester::apply | |
670 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
671 | from_wkt<L>("LINESTRING(1 1,2 2,4 3)"), | |
672 | from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ | |
673 | (1 1,2 2,4 3))"), | |
674 | "mllsdf01" | |
675 | ); | |
676 | ||
677 | tester::apply | |
678 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
679 | from_wkt<L>("LINESTRING(1 1,2 0,4 0)"), | |
680 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
681 | (1 0,2 0),(4 0,7 0),(1 1,2 0))"), | |
682 | "mllsdf02" | |
683 | ); | |
684 | ||
685 | tester::apply | |
686 | (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"), | |
687 | from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"), | |
688 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"), | |
689 | "mllsdf03" | |
690 | ); | |
691 | ||
692 | tester::apply | |
693 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
694 | from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\ | |
695 | 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"), | |
696 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
697 | (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\ | |
698 | (17 0,18 1,17 1,16 0),(4 0,3 1))"), | |
699 | "mllsdf04" | |
700 | ); | |
701 | ||
702 | tester::apply | |
703 | (from_wkt<ML>("MULTILINESTRING((0 -3,5 4,6 6,-3 2,-3 0,\ | |
704 | -3 -10,9 -2,9 5,5 -5,-4 -8,9 0),\ | |
705 | (-7 9,-4 -9,-5 -10,5 3),\ | |
706 | (-8 -3,-6 6,-9 0,-4 -3,-1 -10),\ | |
707 | (0 1,7 -1,-2 3,-7 1),\ | |
708 | (-5 -9,-4 -10,7 -10,0 -6,1 6,2 -1,1 5,-5 -5))"), | |
709 | from_wkt<L>("LINESTRING(-3 6,-3 0,-3 5,2 -3,-6 10,5 0,2 8,\ | |
710 | -6 1,10 -6)"), | |
711 | from_wkt<ML>("MULTILINESTRING((0 -3,5 4,6 6,-3 2),\ | |
712 | (-3 0,-3 -10,9 -2,9 5,5 -5,-4 -8,9 0),\ | |
713 | (-7 9,-4 -9,-5 -10,5 3),\ | |
714 | (-8 -3,-6 6,-9 0,-4 -3,-1 -10),\ | |
715 | (0 1,7 -1,-2 3,-7 1),\ | |
716 | (-5 -9,-4 -10,7 -10,0 -6,1 6,2 -1,1 5,-5 -5),\ | |
717 | (-3 6,-3 2),(-3 2,-3 5,2 -3,-6 10,5 0,2 8,-6 1,10 -6))"), | |
718 | "mllsdf05" | |
719 | ); | |
720 | } | |
721 | ||
722 | ||
723 | ||
724 | ||
725 | ||
726 | ||
727 | BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring ) | |
728 | { | |
729 | #ifdef BOOST_GEOMETRY_TEST_DEBUG | |
730 | std::cout << std::endl << std::endl << std::endl; | |
731 | std::cout << "*** MULTILINESTRING / MULTILINESTRING SYMMETRIC DIFFERENCE ***" | |
732 | << std::endl; | |
733 | std::cout << std::endl; | |
734 | #endif | |
735 | ||
736 | typedef multi_linestring_type ML; | |
737 | ||
738 | typedef test_sym_difference_of_geometries<ML, ML, ML> tester; | |
739 | ||
740 | // disjoint linestrings | |
741 | tester::apply | |
742 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
743 | from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"), | |
744 | from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ | |
745 | (1 1,2 2,4 3),(1 1,2 2,5 3))"), | |
746 | "mlmlsdf01" | |
747 | ); | |
748 | ||
749 | tester::apply | |
750 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
751 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"), | |
752 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
753 | (1 0,2 0),(4 0,7 0),(1 1,2 0),(1 1,3 0))"), | |
754 | "mlmlsdf02" | |
755 | ); | |
756 | ||
757 | tester::apply | |
758 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
759 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"), | |
760 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\ | |
761 | (1 0,2 0),(5 0,7 0),(1 1,2 0),(1 1,3 0))"), | |
762 | "mlmlsdf03" | |
763 | ); | |
764 | ||
765 | tester::apply | |
766 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), | |
767 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"), | |
768 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
769 | (1 0,2 0),(4 0,7 0),(1 1,2 0))"), | |
770 | "mlmlsdf04" | |
771 | ); | |
772 | ||
773 | tester::apply | |
774 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ | |
775 | (10 10,20 10,30 20))"), | |
776 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\ | |
777 | (10 20,15 10,25 10,30 15))"), | |
778 | from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\ | |
779 | (1 0,2 0),(4 0,7 0),(10 10,15 10),(20 10,30 20),\ | |
780 | (1 1,2 0),(10 20,15 10),(20 10,25 10,30 15))"), | |
781 | "mlmlsdf05" | |
782 | ); | |
783 | ||
784 | tester::apply | |
785 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ | |
786 | (10 10,20 10,30 20))"), | |
787 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\ | |
788 | (-1 -1,0 0,9 0,11 10,12 10,13 0.3,14 0.4,15 0.5),\ | |
789 | (10 20,15 10,25 10,30 15))"), | |
790 | from_wkt<ML>("MULTILINESTRING((9 0,10 0,13 0.3),(15 0.5,20 1),\ | |
791 | (10 10,11 10),(12 10,15 10),(20 10,30 20),\ | |
792 | (1 1,2 0),(-1 -1,0 0),(9 0,11 10),(12 10,13 0.3),\ | |
793 | (10 20,15 10),(20 10,25 10,30 15))"), | |
794 | "mlmlsdf06", | |
795 | 4.0 * std::numeric_limits<double>::epsilon() | |
796 | ); | |
797 | ||
798 | tester::apply | |
799 | (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\ | |
800 | (10 10,20 10,30 20))"), | |
801 | from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\ | |
802 | (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\ | |
803 | (10 20,15 10,25 10,30 15))"), | |
804 | from_wkt<ML>("MULTILINESTRING((9 0,10 0,13 3),(15 5,20 10),\ | |
805 | (10 10,11 10),(12 10,15 10),(20 10,30 20),\ | |
806 | (1 1,2 0),(-1 -1,0 0),(9 0,11 10),(12 10,13 3),\ | |
807 | (10 20,15 10),(20 10,25 10,30 15))"), | |
808 | "mlmlsdf06a" | |
809 | ); | |
810 | ||
811 | tester::apply | |
812 | (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"), | |
813 | from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"), | |
814 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),\ | |
815 | (101 0,200 -1))"), | |
816 | "mlmlsdf07" | |
817 | ); | |
818 | ||
819 | tester::apply | |
820 | (from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"), | |
821 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\ | |
822 | (19 -1,20 0,101 0,200 -1))"), | |
823 | from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(-1 -1,0 0),\ | |
824 | (19 -1,20 0),(101 0,200 -1))"), | |
825 | "mlmlsdf07a" | |
826 | ); | |
827 | ||
828 | tester::apply | |
829 | (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"), | |
830 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\ | |
831 | (19 -1,20 0,101 0,200 -1))"), | |
832 | from_wkt<ML>("MULTILINESTRING((-1 -1,0 0),(19 -1,20 0),\ | |
833 | (101 0,200 -1))"), | |
834 | "mlmlsdf07b" | |
835 | ); | |
836 | ||
837 | tester::apply | |
838 | (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"), | |
839 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\ | |
840 | (-1 -1,1 0,101 0,200 -1))"), | |
841 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(0 1,1 1,2 0),\ | |
842 | (-1 -1,1 0),(101 0,200 -1))"), | |
843 | "mlmlsdf08" | |
844 | ); | |
845 | ||
846 | tester::apply | |
847 | (from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"), | |
848 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\ | |
849 | (-1 -1,1 0,101 0,200 -1))"), | |
850 | from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0),(0 1,1 1,2 0.5),\ | |
851 | (-1 -1,1 0,3 0),(101 0,200 -1))"), | |
852 | "mlmlsdf09" | |
853 | ); | |
854 | ||
855 | tester::apply | |
856 | (from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"), | |
857 | from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\ | |
858 | (-1 -1,1 0,101 0,200 -1))"), | |
859 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0),\ | |
860 | (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\ | |
861 | (101 0,200 -1))"), | |
862 | "mlmlsdf10" | |
863 | ); | |
864 | ||
865 | tester::apply | |
866 | (from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\ | |
867 | (0 0,101 0))"), | |
868 | from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\ | |
869 | 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\ | |
870 | (-1 -1,1 0,101 0,200 -1))"), | |
871 | from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,5 1),(6 1,9 1),\ | |
872 | (10 1,13 1),(14 1,100 1,101 0),(0 0,1 0),\ | |
873 | (1 0,1 1),(2 1,3 0),(4 0,5 1),(6 1,7 0),\ | |
874 | (8 0,9 1),(10 1,11 0),(12 0,13 1),(14 1,15 0),\ | |
875 | (-1 -1,1 0),(101 0,200 -1))"), | |
876 | "mlmlsdf11" | |
877 | ); | |
878 | ||
879 | tester::apply | |
880 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
881 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
882 | (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\ | |
883 | (3 1,4 0,16 0,17 1))"), | |
884 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
885 | (0 1,1 0),(19 0,20 1),(1 1,2 0),(18 0,19 1),\ | |
886 | (2 1,3 0),(17 0,18 1),(3 1,4 0),(16 0,17 1))"), | |
887 | "mlmlsdf12" | |
888 | ); | |
889 | ||
890 | tester::apply | |
891 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
892 | from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\ | |
893 | (2 0,18 0,19 1),(3 0,17 0,18 1),\ | |
894 | (4 0,16 0,17 1))"), | |
895 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
896 | (19 0,20 1),(18 0,19 1),(17 0,18 1),(16 0,17 1))"), | |
897 | "mlmlsdf13" | |
898 | ); | |
899 | ||
900 | tester::apply | |
901 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
902 | from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\ | |
903 | (4 0,16 0))"), | |
904 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"), | |
905 | "mlmlsdf13a" | |
906 | ); | |
907 | ||
908 | tester::apply | |
909 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
910 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\ | |
911 | 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"), | |
912 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
913 | (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\ | |
914 | (17 0,18 1,17 1,16 0),(4 0,3 1))"), | |
915 | "mlmlsdf14" | |
916 | ); | |
917 | ||
918 | tester::apply | |
919 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
920 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
921 | (2 2,4 2,6 0))"), | |
922 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
923 | (0 1,1 0),(19 0,20 1),(2 2,4 2,6 0))"), | |
924 | "mlmlsdf15" | |
925 | ); | |
926 | ||
927 | tester::apply | |
928 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
929 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
930 | (6 0,4 2,2 2))"), | |
931 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
932 | (0 1,1 0),(19 0,20 1),(6 0,4 2,2 2))"), | |
933 | "mlmlsdf15a" | |
934 | ); | |
935 | ||
936 | tester::apply | |
937 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
938 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
939 | (2 2,4 2,5 0,6 0))"), | |
940 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
941 | (0 1,1 0),(19 0,20 1),(2 2,4 2,5 0))"), | |
942 | "mlmlsdf16" | |
943 | ); | |
944 | ||
945 | tester::apply | |
946 | (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"), | |
947 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
948 | (6 0,5 0,4 2,2 2))"), | |
949 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\ | |
950 | (0 1,1 0),(19 0,20 1),(5 0,4 2,2 2))"), | |
951 | "mlmlsdf16a" | |
952 | ); | |
953 | ||
954 | tester::apply | |
955 | (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"), | |
956 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
957 | (2 2,4 0,5 2,20 2,25 0))"), | |
958 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
959 | (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0))"), | |
960 | "mlmlsdf17" | |
961 | ); | |
962 | ||
963 | tester::apply | |
964 | (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"), | |
965 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
966 | (2 2,4 0,5 2,20 2,25 0,26 2))"), | |
967 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
968 | (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0,26 2))"), | |
969 | "mlmlsdf17a" | |
970 | ); | |
971 | ||
972 | tester::apply | |
973 | (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"), | |
974 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
975 | (2 2,5 -1,15 2,18 0))"), | |
976 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
977 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"), | |
978 | "mlmlsdf18" | |
979 | ); | |
980 | ||
981 | tester::apply | |
982 | (from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"), | |
983 | from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\ | |
984 | (2 2,5 -1,15 2,18 0))"), | |
985 | from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\ | |
986 | (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"), | |
987 | "mlmlsdf18a" | |
988 | ); | |
989 | } |