added support for svg output;

tester now has a static apply method intead of operator();
This commit is contained in:
Menelaos Karavelas
2014-03-05 12:51:26 +02:00
parent f1b3e63d6b
commit 178e7f3079
2 changed files with 140 additions and 264 deletions

View File

@@ -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))"),

View File

@@ -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);
}
};