renable polygon clipping tests despite current flaws

This commit is contained in:
Dane Springmeyer 2015-02-15 14:00:20 -08:00
parent 6a89b37a76
commit 203ce8b9a6

View file

@ -78,7 +78,7 @@ boost::optional<std::string> linestring_bbox_clipping(mapnik::box2d<double> bbox
} }
using sink_type = std::back_insert_iterator<std::string>; using sink_type = std::back_insert_iterator<std::string>;
std::string wkt; // Use Python String directly ? std::string wkt;
sink_type sink(wkt); sink_type sink(wkt);
static const mapnik::wkt::wkt_multi_generator<sink_type, mapnik::geometry_container> generator; static const mapnik::wkt::wkt_multi_generator<sink_type, mapnik::geometry_container> generator;
if (boost::spirit::karma::generate(sink, generator, output_paths)) if (boost::spirit::karma::generate(sink, generator, output_paths))
@ -153,35 +153,40 @@ int main(int argc, char** argv)
BOOST_TEST_EQ(*result,std::string("LineString(50 50,150 150)")); BOOST_TEST_EQ(*result,std::string("LineString(50 50,150 150)"));
} }
// Polygon/bbox clipping // Polygon/bbox clipping
#if 0
// these tests will fail
{ {
std::string wkt_in("Polygon((50 50,150 50,150 150,50 150,50 50))"); std::string wkt_in("Polygon((50 50,150 50,150 150,50 150,50 50))");
boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in); boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in);
BOOST_TEST(result); BOOST_TEST(result);
BOOST_TEST_EQ(*result,std::string("Polygon((50 50,150 50,150 150,50 150,50 50))")); // TODO - the extra 50 50 is not ideal, but we enforce this result for now to prevent
// regressions and because we don't have actionable solution to drop extra 50 50
BOOST_TEST_EQ(*result,std::string("Polygon((50 50,150 50,150 150,50 150,50 50,50 50))"));
// below is ideal, but not current result
//BOOST_TEST_EQ(*result,std::string("Polygon((50 50,150 50,150 150,50 150,50 50))"));
} }
{ {
std::string wkt_in("Polygon((60 60,140 60,140 160,60 140,60 60))"); std::string wkt_in("Polygon((60 60,140 60,140 160,60 140,60 60))");
boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in); boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in);
BOOST_TEST(result); BOOST_TEST(result);
BOOST_TEST_EQ(*result,std::string("Polygon((60 60,140 60,140 160,60 140,60 60))")); BOOST_TEST_EQ(*result,std::string("Polygon((60 60,140 60,140 150,100 150,60 140,60 60,60 60))"));
//BOOST_TEST_EQ(*result,std::string("Polygon((60 60,140 60,140 160,60 140,60 60))"));
} }
{ {
std::string wkt_in("Polygon((0 0,10 0,10 10,0 10,0 0))"); std::string wkt_in("Polygon((0 0,10 0,10 10,0 10,0 0))");
boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in); boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in);
BOOST_TEST(result); BOOST_TEST(result);
BOOST_TEST_EQ(*result, std::string("GeometryCollection EMPTY")); // TODO - this is completely wrong: should not have )) and ideally should be EMPTY
BOOST_TEST_EQ(*result, std::string("Polygon())"));
} }
{ {
std::string wkt_in("Polygon((0 0,100 200,200 0,0 0 ))"); std::string wkt_in("Polygon((0 0,100 200,200 0,0 0 ))");
boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in); boost::optional<std::string> result = polygon_bbox_clipping(mapnik::box2d<double>(50,50,150,150),wkt_in);
BOOST_TEST(result); BOOST_TEST(result);
BOOST_TEST_EQ(*result,std::string("Polygon((50 50,50 100,75 150,125 150,150 100,150 50,50 50))")); BOOST_TEST_EQ(*result, std::string("Polygon((50 50,50 100,75 150,125 150,150 100,150 50))"));
//BOOST_TEST_EQ(*result,std::string("Polygon((50 50,50 100,75 150,125 150,150 100,150 50,50 50))"));
} }
#endif
} }
catch (std::exception const & ex) catch (std::exception const & ex)
{ {