diff --git a/test/algorithms/simplify.cpp b/test/algorithms/simplify.cpp index 66c8599c4..919e84c69 100644 --- a/test/algorithms/simplify.cpp +++ b/test/algorithms/simplify.cpp @@ -38,6 +38,21 @@ void test_all() "LINESTRING(0 0,5 5,7 5,10 10)", "LINESTRING(0 0,5 5,7 5,10 10)", 1.0); + // Mail 2013-10-07, real-life test, piece of River Leine + // PostGIS returns exactly the same result + test_geometry >( + "LINESTRING(4293586 3290439,4293568 3290340,4293566 3290332,4293570 3290244,4293576 3290192" + ",4293785 3289660,4293832 3289597,4293879 3289564,4293937 3289545,4294130 3289558" + ",4294204 3289553,4294240 3289539,4294301 3289479,4294317 3289420,4294311 3289353" + ",4294276 3289302,4293870 3289045,4293795 3288978,4293713 3288879,4293669 3288767" + ",4293654 3288652,4293657 3288563,4293690 3288452,4293761 3288360,4293914 3288215" + ",4293953 3288142,4293960 3288044,4293951 3287961,4293913 3287875,4293708 3287628" + ",4293658 3287542,4293633 3287459,4293630 3287383,4293651 3287323,4293697 3287271" + ",4293880 3287128,4293930 3287045,4293938 3286977,4293931 3286901,4293785 3286525" + ",4293775 3286426,4293786 3286358,4293821 3286294,4294072 3286076,4294134 3285986)", + "LINESTRING(4293586 3290439,4293785 3289660,4294317 3289420,4293654 3288652,4293960 3288044" + ",4293633 3287459,4293786 3286358,4294134 3285986)", 250); + /* TODO fix this test_geometry >( "LINESTRING(0 0,5 5,7 5,10 10)", @@ -62,9 +77,7 @@ Above can be checked in PostGIS by: select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 10 10)'),1.0)) as simplified union all select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 6 5, 10 10)'),1.0)) -union all select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 7 5, 10 10)'),1.0)) -union all select astext(ST_Simplify(geomfromtext('POLYGON((4 0, 8 2, 8 7, 4 9, 0 7, 0 2, 2 1, 4 0))'),1.0)) -union all select astext(ST_Simplify(geomfromtext('POLYGON((4 0, 8 2, 8 7, 4 9, 0 7, 0 2, 2 1, 4 0),(7 3, 7 6, 1 6, 1 3, 4 3, 7 3))'),1.0)) +etc */ // Just check compilation diff --git a/test/algorithms/test_simplify.hpp b/test/algorithms/test_simplify.hpp index b5ed1d359..e20a7e42b 100644 --- a/test/algorithms/test_simplify.hpp +++ b/test/algorithms/test_simplify.hpp @@ -11,6 +11,8 @@ // Test-functionality, shared between single and multi tests +#include +#include #include #include #include @@ -35,7 +37,7 @@ struct test_inserter std::back_inserter(simplified), distance); std::ostringstream out; - out << bg::wkt(simplified); + out << std::setprecision(16) << bg::wkt(simplified); BOOST_CHECK_EQUAL(out.str(), expected); } }; @@ -53,12 +55,12 @@ void test_geometry(std::string const& wkt, std::string const& expected, double d { std::ostringstream out; - out << bg::wkt(simplified); + out << std::setprecision(16) << bg::wkt(simplified); BOOST_CHECK_MESSAGE(out.str() == expected, "simplify: " << bg::wkt(geometry) << " expected " << expected - << " got " << bg::wkt(simplified)); + << " got " << out.str()); } // Check using user-specified strategy @@ -76,7 +78,7 @@ void test_geometry(std::string const& wkt, std::string const& expected, double d { std::ostringstream out; - out << bg::wkt(simplified); + out << std::setprecision(16) << bg::wkt(simplified); BOOST_CHECK_EQUAL(out.str(), expected); }