From 178e7f307974645dab135b44115e2a03e48b345f Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Wed, 5 Mar 2014 12:51:26 +0200 Subject: [PATCH] added support for svg output; tester now has a static apply method intead of operator(); --- test/algorithms/sym_difference1.cpp | 208 +++++++++++------------ test/algorithms/test_sym_difference1.hpp | 196 ++++----------------- 2 files changed, 140 insertions(+), 264 deletions(-) diff --git a/test/algorithms/sym_difference1.cpp b/test/algorithms/sym_difference1.cpp index e67dd26af..49cb56e2f 100644 --- a/test/algorithms/sym_difference1.cpp +++ b/test/algorithms/sym_difference1.cpp @@ -10,7 +10,7 @@ #include #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 tester; - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 1,2 1,3 2)"), from_wkt("LINESTRING(0 2,1 1,2 1,3 0)"), from_wkt("MULTILINESTRING((0 0,1 1),(2 1,3 2),\ (0 2,1 1),(2 1,3 0))"), "llsdf00"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,5 0)"), from_wkt("LINESTRING(3 0,4 0)"), from_wkt("MULTILINESTRING((0 0,3 0),(4 0,5 0))"), "llsdf01"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,4 0)"), from_wkt("LINESTRING(3 0,6 0)"), from_wkt("MULTILINESTRING((0 0,3 0),(4 0,6 0))"), "llsdf01-1"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,6 0)"), from_wkt("LINESTRING(0 0,4 0)"), from_wkt("MULTILINESTRING((4 0,6 0))"), "llsdf01-2"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,20 0)"), from_wkt("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"), from_wkt("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("LINESTRING(-20 0,20 0)"), from_wkt("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"), from_wkt("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("LINESTRING(0 0,4 0)"), from_wkt("LINESTRING(2 0,4 0)"), from_wkt("MULTILINESTRING((0 0,2 0))"), "llsdf01-5"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,2 0)"), from_wkt("LINESTRING(4 0,5 0)"), from_wkt("MULTILINESTRING((0 0,2 0),(4 0,5 0))"), "llsdf01-6"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,2 0)"), from_wkt("LINESTRING(2 0,5 0)"), from_wkt("MULTILINESTRING((0 0,2 0),(2 0,5 0))"), "llsdf01-7"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,4 0)"), from_wkt("LINESTRING(3 0,5 0)"), from_wkt("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"), "llsdf01-8"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,4 0)"), from_wkt("LINESTRING(3 0,4 0,5 0)"), from_wkt("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"), "llsdf01-9"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,6 0)"), from_wkt("LINESTRING(2 0,4 0,5 0)"), from_wkt("MULTILINESTRING((0 0,2 0),(5 0,6 0))"), "llsdf01-10"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,5 5,10 5,15 0)"), from_wkt("LINESTRING(-1 6,0 5,15 5)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), from_wkt("LINESTRING(-1 0,25 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"), from_wkt("LINESTRING(-1 0,19 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"), from_wkt("LINESTRING(-1 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"), from_wkt("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\ 30 0,31 1)"), from_wkt("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("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"), from_wkt("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"), from_wkt("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("LINESTRING(0 0,2 0,3 1)"), from_wkt("LINESTRING(0 0,2 0,3 1)"), from_wkt("MULTILINESTRING()"), "llsdf12"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,2 0,3 1)"), from_wkt("LINESTRING(3 1,2 0,0 0)"), from_wkt("MULTILINESTRING()"), "llsdf12-1"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,2 1,3 5,4 0)"), from_wkt("LINESTRING(1 0,2 1,3 5,4 0,5 10)"), from_wkt("MULTILINESTRING((0 0,1 0),(4 0,5 10))"), "llsdf13"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"), from_wkt("LINESTRING(0 0,2 0,2.5 0,3 1)"), from_wkt("MULTILINESTRING()"), "llsdf14"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,2 1,3 5,4 0)"), from_wkt("LINESTRING(1 0,2 1,3 5)"), from_wkt("MULTILINESTRING((0 0,1 0),(3 5,4 0))"), "llsdf15"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,2 1,3 2)"), from_wkt("LINESTRING(0.5 0,1 0,3 2,4 5)"), from_wkt("MULTILINESTRING((0 0,0.5 0),(3 2,4 5))"), "llsdf16"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,1 0,2 1,3 2)"), from_wkt("LINESTRING(4 5,3 2,1 0,0.5 0)"), from_wkt("MULTILINESTRING((0 0,0.5 0),(4 5,3 2))"), "llsdf16-r"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,10 0,20 1,30 1)"), from_wkt("LINESTRING(1 1,2 0,3 1,20 1,25 1)"), from_wkt("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("LINESTRING(0 0,10 0,20 1,21 0,30 0)"), from_wkt("LINESTRING(1 1,2 0,3 1,20 1,25 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0)"), from_wkt("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ (5 0,20 1,4 1,4 0))"), "llsdf19a"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(4 0,4 1,20 1,5 0,1 0)"), from_wkt("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ (4 0,4 1,20 1,5 0))"), "llsdf19a-r"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"), from_wkt("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ (5 0,20 1,4 1,4 0))"), "llsdf19b"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"), from_wkt("MULTILINESTRING((0 0,1 0),(5 0,30 0),\ (5 0,20 1,4 1,4 0))"), "llsdf19d"); - tester() + tester::apply (from_wkt("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"), from_wkt("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("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"), from_wkt("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"), from_wkt("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("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"), from_wkt("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"), from_wkt("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("LINESTRING(0 0,18 0,19 0,30 0)"), from_wkt("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"), from_wkt("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 tester; // disjoint linestrings - tester() + tester::apply (from_wkt("LINESTRING(0 0,10 0,20 1)"), from_wkt("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"), from_wkt("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("LINESTRING(0 0,10 0,20 1)"), from_wkt("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"), from_wkt("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("LINESTRING(0 0,10 0,20 1)"), from_wkt("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"), from_wkt("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("LINESTRING(0 0,10 0,20 1)"), from_wkt("MULTILINESTRING((1 1,2 0,4 0))"), from_wkt("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("LINESTRING(0 0,101 0)"), from_wkt("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"), from_wkt("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"), "lmlsdf07" ); - tester() + tester::apply (from_wkt("LINESTRING(-1 1,0 0,101 0)"), from_wkt("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("LINESTRING(0 0,101 0)"), from_wkt("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("LINESTRING(0 0,101 0)"), from_wkt("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("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"), from_wkt("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("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,20 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("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("LINESTRING(0 0,30 0)"), from_wkt("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("LINESTRING(0 0,18 0,19 0,30 0)"), from_wkt("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("LINESTRING(0 0,18 0,19 0,30 0)"), from_wkt("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("LINESTRING(0 0,18 0,19 0,30 0)"), from_wkt("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("LINESTRING(0 0,18 0,19 0,30 0)"), from_wkt("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 tester; // disjoint linestrings - tester() + tester::apply (from_wkt("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("LINESTRING(1 1,2 2,4 3)"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("LINESTRING(1 1,2 0,4 0)"), from_wkt("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("MULTILINESTRING((0 0,101 0))"), from_wkt("LINESTRING(-1 -1,1 0,101 0,200 -1)"), from_wkt("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"), "mllsdf03" ); - tester() + tester::apply (from_wkt("MULTILINESTRING((0 0,20 0))"), from_wkt("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 tester; // disjoint linestrings - tester() + tester::apply (from_wkt("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"), from_wkt("MULTILINESTRING((1 1,2 0,4 0))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ (10 10,20 10,30 20))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\ (10 10,20 10,30 20))"), from_wkt("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("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\ (10 10,20 10,30 20))"), from_wkt("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("MULTILINESTRING((0 0,101 0))"), from_wkt("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"), from_wkt("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("MULTILINESTRING((-1 1,0 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,1 1,100 1,101 0),\ (0 0,101 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,20 0))"), from_wkt("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("MULTILINESTRING((0 0,30 0))"), from_wkt("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("MULTILINESTRING((0 0,30 0))"), from_wkt("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("MULTILINESTRING((0 0,30 0))"), from_wkt("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("MULTILINESTRING((0 0,18 0,19 0,30 0))"), from_wkt("MULTILINESTRING((0 1,1 0,19 0,20 1),\ (2 2,5 -1,15 2,18 0))"), diff --git a/test/algorithms/test_sym_difference1.hpp b/test/algorithms/test_sym_difference1.hpp index 2e8c70172..13fee4102 100644 --- a/test/algorithms/test_sym_difference1.hpp +++ b/test/algorithms/test_sym_difference1.hpp @@ -11,143 +11,17 @@ #define BOOST_GEOMETRY_TEST_SYM_DIFFERENCE1_HPP #include "from_wkt.hpp" -#include -#include -#include #include #include #include #include - -namespace bg = ::boost::geometry; +#include "test_set_ops_common.hpp" #include "to_svg.hpp" -template -struct ls_less -{ - typedef typename boost::range_iterator::type It1; - typedef typename boost::range_iterator::type It2; - - typedef bg::less::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 -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::type Linestring1; - - typedef typename boost::range_value::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 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 - bool operator()(MLS1 const& mls1, MLS2 const& mls2) const - { - if ( multilinestring_equals::apply(mls1, mls2) ) - { - return true; - } - - MLS1 rmls1 = mls1; - bg::reverse(rmls1); - if ( multilinestring_equals::apply(rmls1, mls2) ) - { - return true; - } - - MLS2 rmls2 = mls2; - bg::reverse(rmls2); - if ( multilinestring_equals::apply(mls1, rmls2) ) - { - return true; - } - - return multilinestring_equals::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::type LineString; - typedef std::vector LineStringVector; - typedef std::deque LineStringDeque; + typedef std::vector linestring_vector; + typedef std::deque 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(rg1); Geometry2 rg2(geometry2); bg::reverse(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); - } };