mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-11 11:52:11 +00:00
added support for svg output;
tester now has a static apply method intead of operator();
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#include <iostream>
|
||||
|
||||
#ifndef BOOST_TEST_MODULE
|
||||
#define BOOST_TEST_MODULE test_sym_difference
|
||||
#define BOOST_TEST_MODULE test_sym_difference_linear_linear
|
||||
#endif
|
||||
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
@@ -51,152 +51,152 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
|
||||
|
||||
typedef test_sym_difference_of_geometries<L, L, ML> tester;
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
|
||||
from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,3 2),\
|
||||
(0 2,1 1),(2 1,3 0))"),
|
||||
"llsdf00");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,5 0)"),
|
||||
from_wkt<L>("LINESTRING(3 0,4 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,5 0))"),
|
||||
"llsdf01");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,4 0)"),
|
||||
from_wkt<L>("LINESTRING(3 0,6 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,6 0))"),
|
||||
"llsdf01-1");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,6 0)"),
|
||||
from_wkt<L>("LINESTRING(0 0,4 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((4 0,6 0))"),
|
||||
"llsdf01-2");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,4 0),(5 0,20 0),\
|
||||
(0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"),
|
||||
"llsdf01-3");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-20 0,20 0)"),
|
||||
from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-20 0,4 0),(5 0,20 0),\
|
||||
(0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"),
|
||||
"llsdf01-4");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,4 0)"),
|
||||
from_wkt<L>("LINESTRING(2 0,4 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
|
||||
"llsdf01-5");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,2 0)"),
|
||||
from_wkt<L>("LINESTRING(4 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,5 0))"),
|
||||
"llsdf01-6");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,2 0)"),
|
||||
from_wkt<L>("LINESTRING(2 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(2 0,5 0))"),
|
||||
"llsdf01-7");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
|
||||
from_wkt<L>("LINESTRING(3 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"),
|
||||
"llsdf01-8");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
|
||||
from_wkt<L>("LINESTRING(3 0,4 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"),
|
||||
"llsdf01-9");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,6 0)"),
|
||||
from_wkt<L>("LINESTRING(2 0,4 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,6 0))"),
|
||||
"llsdf01-10");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5),(10 5,15 0),\
|
||||
(-1 6,0 5,5 5),(10 5,15 5))"),
|
||||
"llsdf02");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
|
||||
"llsdf03");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,5 5,10 5,15 0),\
|
||||
(-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
|
||||
"llsdf04");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(20 0,25 1),(-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
|
||||
"llsdf05");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(-1 0,0 0),(1 0,15 0))"),
|
||||
"llsdf05-1");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
|
||||
"llsdf06");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
|
||||
"llsdf07");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
|
||||
"llsdf08");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
|
||||
from_wkt<L>("LINESTRING(-1 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(30 0,31 1),(-1 0,0 0),(1 0,15 0))"),
|
||||
"llsdf09");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
|
||||
from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
|
||||
(30 0,31 1),(-1 -1,0 0),(1 0,2 1,3 0,15 0))"),
|
||||
"llsdf10");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
|
||||
30 0,31 1)"),
|
||||
from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
|
||||
@@ -205,7 +205,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
|
||||
(2 0,2.5 1,3 0),(4 0,15 0))"),
|
||||
"llsdf11");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
|
||||
from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\
|
||||
@@ -213,147 +213,147 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
|
||||
(2 0,2.5 1,3 0),(4 0,15 0))"),
|
||||
"llsdf11-1");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
|
||||
from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING()"),
|
||||
"llsdf12");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
|
||||
from_wkt<L>("LINESTRING(3 1,2 0,0 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING()"),
|
||||
"llsdf12-1");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(4 0,5 10))"),
|
||||
"llsdf13");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
|
||||
from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING()"),
|
||||
"llsdf14");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,2 1,3 5)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(3 5,4 0))"),
|
||||
"llsdf15");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
|
||||
from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(3 2,4 5))"),
|
||||
"llsdf16");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
|
||||
from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(4 5,3 2))"),
|
||||
"llsdf16-r");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"),
|
||||
from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(25 1,30 1),\
|
||||
(1 1,2 0,3 1,20 1))"),
|
||||
"llsdf17");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0),\
|
||||
(1 1,2 0,3 1,20 1,25 0))"),
|
||||
"llsdf18");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0,5 1))"),
|
||||
"llsdf19");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 1,4 0,4 1,20 1,5 0))"),
|
||||
"llsdf19-r");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0))"),
|
||||
"llsdf19a");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(4 0,4 1,20 1,5 0))"),
|
||||
"llsdf19a-r");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0))"),
|
||||
"llsdf19b");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0),(5 0,6 1))"),
|
||||
"llsdf19c");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0))"),
|
||||
"llsdf19d");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0),(3 0,3 1))"),
|
||||
"llsdf19e");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,4 0),(5 0,5 1))"),
|
||||
"llsdf19f");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 1,5 0),(4 0,4 1,20 1,5 0))"),
|
||||
"llsdf19f-r");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 0,20 1,4 1,5 0,5 1))"),
|
||||
"llsdf19g");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
|
||||
(5 1,5 0,4 1,20 1,5 0))"),
|
||||
"llsdf19g-r");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
|
||||
from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,20 0),(25 0,30 0,30 30,10 30),\
|
||||
@@ -361,7 +361,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
|
||||
(5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
|
||||
"llsdf20");
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
|
||||
from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,15 0),(30 0,30 30,10 30),\
|
||||
@@ -373,7 +373,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
|
||||
|| defined(GEOMETRY_TEST_INCLUDE_FAILING_TESTS)
|
||||
// the following example produces duplicate turns (when the order
|
||||
// is reversed and the 2nd LS is reversed)
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
|
||||
from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,18 0),(20 0,30 0),\
|
||||
@@ -400,7 +400,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
typedef test_sym_difference_of_geometries<L, ML, ML> tester;
|
||||
|
||||
// disjoint linestrings
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),\
|
||||
@@ -408,7 +408,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf01"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
|
||||
@@ -416,7 +416,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf02"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\
|
||||
@@ -424,7 +424,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf03"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
|
||||
@@ -432,14 +432,14 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf04"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"),
|
||||
"lmlsdf07"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
|
||||
(19 -1,20 0,101 0,200 -1))"),
|
||||
@@ -448,7 +448,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf07a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
|
||||
(19 -1,20 0,101 0,200 -1))"),
|
||||
@@ -457,7 +457,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf07b"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -466,7 +466,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf08"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -475,7 +475,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf09"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -485,7 +485,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf10"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
|
||||
@@ -496,7 +496,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf12"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
|
||||
(2 0,18 0,19 1),(3 0,17 0,18 1),\
|
||||
@@ -506,7 +506,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf13"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
|
||||
(4 0,16 0))"),
|
||||
@@ -514,7 +514,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf13a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
|
||||
1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
|
||||
@@ -524,7 +524,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf14"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 2,6 0))"),
|
||||
@@ -533,7 +533,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf15"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(6 0,4 2,2 2))"),
|
||||
@@ -542,7 +542,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf15a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 2,5 0,6 0))"),
|
||||
@@ -551,7 +551,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf16"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,20 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(6 0,5 0,4 2,2 2))"),
|
||||
@@ -560,7 +560,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf16a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 0,5 2,20 2,25 0))"),
|
||||
@@ -569,7 +569,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf17"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 0,5 2,20 2,25 0,26 2))"),
|
||||
@@ -578,7 +578,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf17a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,18 0))"),
|
||||
@@ -587,7 +587,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf18"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,18 0))"),
|
||||
@@ -599,7 +599,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
#if !defined(BOOST_GEOMETRY_DIFFERENCE_DO_NOT_REMOVE_DUPLICATE_TURNS) \
|
||||
|| defined(GEOMETRY_TEST_INCLUDE_FAILING_TESTS)
|
||||
// the following example produces duplicate turns
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,18 0,20 0))"),
|
||||
@@ -609,7 +609,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
);
|
||||
#endif
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,25 0,26 0))"),
|
||||
@@ -618,7 +618,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
|
||||
"lmlsdf18c"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,25 0,21 0))"),
|
||||
@@ -646,7 +646,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_linestring )
|
||||
typedef test_sym_difference_of_geometries<ML, L, ML> tester;
|
||||
|
||||
// disjoint linestrings
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<L>("LINESTRING(1 1,2 2,4 3)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
|
||||
@@ -654,7 +654,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_linestring )
|
||||
"mllsdf01"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<L>("LINESTRING(1 1,2 0,4 0)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
|
||||
@@ -662,14 +662,14 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_linestring )
|
||||
"mllsdf02"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
|
||||
from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"),
|
||||
"mllsdf03"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
|
||||
1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
|
||||
@@ -699,7 +699,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
typedef test_sym_difference_of_geometries<ML, ML, ML> tester;
|
||||
|
||||
// disjoint linestrings
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
|
||||
@@ -707,7 +707,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf01"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
|
||||
@@ -715,7 +715,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf02"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\
|
||||
@@ -723,7 +723,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf03"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
|
||||
@@ -731,7 +731,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf04"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
|
||||
(10 10,20 10,30 20))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
|
||||
@@ -745,7 +745,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
#ifdef GEOMETRY_TEST_INCLUDE_FAILING_TESTS
|
||||
// the following produces an assertion failure in line 483 of
|
||||
// get_turn_info_ll
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
|
||||
(10 10,20 10,30 20))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
|
||||
@@ -759,7 +759,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
);
|
||||
#endif
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
|
||||
(10 10,20 10,30 20))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
|
||||
@@ -772,7 +772,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf06"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),\
|
||||
@@ -780,7 +780,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf07"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
|
||||
(19 -1,20 0,101 0,200 -1))"),
|
||||
@@ -789,7 +789,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf07a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
|
||||
(19 -1,20 0,101 0,200 -1))"),
|
||||
@@ -798,7 +798,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf07b"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -807,7 +807,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf08"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -816,7 +816,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf09"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
|
||||
(-1 -1,1 0,101 0,200 -1))"),
|
||||
@@ -826,7 +826,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf10"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
|
||||
(0 0,101 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
|
||||
@@ -840,7 +840,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf11"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
|
||||
@@ -851,7 +851,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf12"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
|
||||
(2 0,18 0,19 1),(3 0,17 0,18 1),\
|
||||
@@ -861,7 +861,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf13"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
|
||||
(4 0,16 0))"),
|
||||
@@ -869,7 +869,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf13a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
|
||||
1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
|
||||
@@ -879,7 +879,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf14"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 2,6 0))"),
|
||||
@@ -888,7 +888,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf15"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(6 0,4 2,2 2))"),
|
||||
@@ -897,7 +897,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf15a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 2,5 0,6 0))"),
|
||||
@@ -906,7 +906,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf16"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(6 0,5 0,4 2,2 2))"),
|
||||
@@ -915,7 +915,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf16a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 0,5 2,20 2,25 0))"),
|
||||
@@ -924,7 +924,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf17"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,4 0,5 2,20 2,25 0,26 2))"),
|
||||
@@ -933,7 +933,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
"mlmlsdf17a"
|
||||
);
|
||||
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,18 0))"),
|
||||
@@ -946,7 +946,7 @@ BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
|
||||
|| defined(GEOMETRY_TEST_INCLUDE_FAILING_TESTS)
|
||||
// the following example produces duplicate turns (when
|
||||
// considering the difference of the ML minus the reversed L)
|
||||
tester()
|
||||
tester::apply
|
||||
(from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
|
||||
from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
|
||||
(2 2,5 -1,15 2,18 0))"),
|
||||
|
||||
@@ -11,143 +11,17 @@
|
||||
#define BOOST_GEOMETRY_TEST_SYM_DIFFERENCE1_HPP
|
||||
|
||||
#include "from_wkt.hpp"
|
||||
#include <boost/geometry/algorithms/reverse.hpp>
|
||||
#include <boost/geometry/algorithms/equals.hpp>
|
||||
#include <boost/geometry/multi/algorithms/reverse.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
#include <boost/geometry/geometry.hpp>
|
||||
|
||||
|
||||
namespace bg = ::boost::geometry;
|
||||
#include "test_set_ops_common.hpp"
|
||||
|
||||
#include "to_svg.hpp"
|
||||
|
||||
|
||||
template <typename LS1, typename LS2>
|
||||
struct ls_less
|
||||
{
|
||||
typedef typename boost::range_iterator<LS1 const>::type It1;
|
||||
typedef typename boost::range_iterator<LS2 const>::type It2;
|
||||
|
||||
typedef bg::less<typename bg::point_type<LS1>::type> PointLess;
|
||||
|
||||
bool operator()(LS1 const& ls1, LS2 const& ls2) const
|
||||
{
|
||||
if ( boost::size(ls1) != boost::size(ls2) )
|
||||
return boost::size(ls1) < boost::size(ls2);
|
||||
|
||||
It1 it1 = boost::begin(ls1);
|
||||
It2 it2 = boost::begin(ls2);
|
||||
PointLess less;
|
||||
for (; it1 != boost::end(ls1); ++it1, ++it2)
|
||||
{
|
||||
if ( less(*it1, *it2) )
|
||||
return true;
|
||||
if ( less(*it2, *it1) )
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template <typename MultiLinestring1, typename MultiLinestring2>
|
||||
struct multilinestring_equals
|
||||
{
|
||||
static inline
|
||||
bool apply(MultiLinestring1 const& mls1_, MultiLinestring2 const& mls2_)
|
||||
{
|
||||
MultiLinestring1 mls1 = mls1_;
|
||||
MultiLinestring2 mls2 = mls2_;
|
||||
if ( boost::size(mls1) != boost::size(mls2) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
typedef typename boost::range_iterator
|
||||
<
|
||||
MultiLinestring1 const
|
||||
>::type ls1_iterator;
|
||||
|
||||
typedef typename boost::range_iterator
|
||||
<
|
||||
MultiLinestring2 const
|
||||
>::type ls2_iterator;
|
||||
|
||||
typedef typename boost::range_value<MultiLinestring1>::type Linestring1;
|
||||
|
||||
typedef typename boost::range_value<MultiLinestring2>::type Linestring2;
|
||||
|
||||
typedef typename boost::range_iterator
|
||||
<
|
||||
Linestring1 const
|
||||
>::type pt1_iterator;
|
||||
|
||||
typedef typename boost::range_iterator
|
||||
<
|
||||
Linestring2 const
|
||||
>::type pt2_iterator;
|
||||
|
||||
typedef ls_less<Linestring1, Linestring2> LS_Less;
|
||||
|
||||
std::sort(boost::begin(mls1), boost::end(mls1), LS_Less());
|
||||
std::sort(boost::begin(mls2), boost::end(mls2), LS_Less());
|
||||
|
||||
ls1_iterator it1 = boost::begin(mls1);
|
||||
ls2_iterator it2 = boost::begin(mls2);
|
||||
for (; it1 != boost::end(mls1); ++it1, ++it2)
|
||||
{
|
||||
if ( boost::size(*it1) != boost::size(*it2) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
pt1_iterator pit1 = boost::begin(*it1);
|
||||
pt2_iterator pit2 = boost::begin(*it2);
|
||||
for (; pit1 != boost::end(*it1); ++pit1, ++pit2)
|
||||
{
|
||||
if ( !bg::equals(*pit1, *pit2) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
struct equals
|
||||
{
|
||||
template <typename MLS1, typename MLS2>
|
||||
bool operator()(MLS1 const& mls1, MLS2 const& mls2) const
|
||||
{
|
||||
if ( multilinestring_equals<MLS1, MLS2>::apply(mls1, mls2) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
MLS1 rmls1 = mls1;
|
||||
bg::reverse(rmls1);
|
||||
if ( multilinestring_equals<MLS1, MLS2>::apply(rmls1, mls2) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
MLS2 rmls2 = mls2;
|
||||
bg::reverse(rmls2);
|
||||
if ( multilinestring_equals<MLS1, MLS2>::apply(mls1, rmls2) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return multilinestring_equals<MLS1, MLS2>::apply(rmls1, rmls2);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//==================================================================
|
||||
//==================================================================
|
||||
// symmetric difference of (linear) geometries
|
||||
@@ -161,23 +35,29 @@ template
|
||||
>
|
||||
struct test_sym_difference_of_geometries
|
||||
{
|
||||
void base_test(Geometry1 const& geometry1,
|
||||
Geometry2 const& geometry2,
|
||||
MultiLineString const& mls_sym_diff,
|
||||
bool test_vector_and_deque = false) const
|
||||
static inline void base_test(Geometry1 const& geometry1,
|
||||
Geometry2 const& geometry2,
|
||||
MultiLineString const& mls_sym_diff,
|
||||
std::string const& case_id,
|
||||
bool test_vector_and_deque = false)
|
||||
{
|
||||
static bool vector_deque_already_tested = false;
|
||||
|
||||
typedef typename boost::range_value<MultiLineString>::type LineString;
|
||||
typedef std::vector<LineString> LineStringVector;
|
||||
typedef std::deque<LineString> LineStringDeque;
|
||||
typedef std::vector<LineString> linestring_vector;
|
||||
typedef std::deque<LineString> linestring_deque;
|
||||
|
||||
MultiLineString mls_output;
|
||||
|
||||
LineStringVector ls_vector_output;
|
||||
LineStringDeque ls_deque_output;
|
||||
linestring_vector ls_vector_output;
|
||||
linestring_deque ls_deque_output;
|
||||
|
||||
bg::sym_difference(geometry1, geometry2, mls_output);
|
||||
|
||||
BOOST_CHECK( equals()(mls_sym_diff, mls_output) );
|
||||
BOOST_CHECK( equals::apply(mls_sym_diff, mls_output) );
|
||||
|
||||
set_operation_output("sym_difference", case_id,
|
||||
geometry1, geometry2, mls_output);
|
||||
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
|
||||
@@ -191,8 +71,9 @@ struct test_sym_difference_of_geometries
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
|
||||
if ( test_vector_and_deque )
|
||||
if ( !vector_deque_already_tested && test_vector_and_deque )
|
||||
{
|
||||
vector_deque_already_tested = true;
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << std::endl;
|
||||
std::cout << "Testing with vector and deque as output container..."
|
||||
@@ -203,13 +84,13 @@ struct test_sym_difference_of_geometries
|
||||
|
||||
BOOST_CHECK((multilinestring_equals
|
||||
<
|
||||
MultiLineString, LineStringVector
|
||||
MultiLineString, linestring_vector
|
||||
>::apply(mls_sym_diff, ls_vector_output)
|
||||
));
|
||||
|
||||
BOOST_CHECK((multilinestring_equals
|
||||
<
|
||||
MultiLineString, LineStringDeque
|
||||
MultiLineString, linestring_deque
|
||||
>::apply(mls_sym_diff, ls_deque_output)
|
||||
));
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
@@ -222,7 +103,7 @@ struct test_sym_difference_of_geometries
|
||||
bg::clear(mls_output);
|
||||
bg::sym_difference(geometry2, geometry1, mls_output);
|
||||
|
||||
BOOST_CHECK( equals()(mls_sym_diff, mls_output) );
|
||||
BOOST_CHECK( equals::apply(mls_sym_diff, mls_output) );
|
||||
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << "Geometry #1: " << bg::wkt(geometry2) << std::endl;
|
||||
@@ -239,41 +120,36 @@ struct test_sym_difference_of_geometries
|
||||
|
||||
|
||||
|
||||
void operator()(Geometry1 const& geometry1,
|
||||
Geometry2 const& geometry2,
|
||||
MultiLineString const& mls_sym_diff) const
|
||||
static inline void apply(Geometry1 const& geometry1,
|
||||
Geometry2 const& geometry2,
|
||||
MultiLineString const& mls_sym_diff,
|
||||
std::string const& case_id)
|
||||
{
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << "test case: " << case_id << std::endl;
|
||||
std::stringstream sstr;
|
||||
sstr << "svgs/" << case_id << ".svg";
|
||||
#ifdef TEST_WITH_SVG
|
||||
to_svg(geometry1, geometry2, sstr.str());
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Geometry1 rg1(geometry1);
|
||||
bg::reverse<Geometry1>(rg1);
|
||||
|
||||
Geometry2 rg2(geometry2);
|
||||
bg::reverse<Geometry2>(rg2);
|
||||
|
||||
base_test(geometry1, geometry2, mls_sym_diff, true);
|
||||
base_test(geometry1, geometry2, mls_sym_diff, case_id, true);
|
||||
// base_test(geometry1, rg2, mls_sym_diff);
|
||||
// base_test(rg1, geometry2, mls_sym_diff);
|
||||
base_test(rg1, rg2, mls_sym_diff);
|
||||
base_test(rg1, rg2, case_id, mls_sym_diff);
|
||||
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << std::endl;
|
||||
std::cout << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void operator()(Geometry1 const& geometry1,
|
||||
Geometry2 const& geometry2,
|
||||
MultiLineString const& mls_sym_diff,
|
||||
std::string const& test_case_str) const
|
||||
{
|
||||
#ifdef GEOMETRY_TEST_DEBUG
|
||||
std::cout << "test case: " << test_case_str << std::endl;
|
||||
std::stringstream sstr;
|
||||
sstr << "svgs/" << test_case_str << ".svg";
|
||||
to_svg(geometry1, geometry2, sstr.str());
|
||||
#endif
|
||||
this->operator()(geometry1, geometry2, mls_sym_diff);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user