| 14 | using namespace ::testing; |
| 15 | |
| 16 | TEST(PolygonizerTests, SimplePolygon) |
| 17 | { |
| 18 | const auto geometry = generative::io::from_wkt("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))"); |
| 19 | ASSERT_TRUE(geometry); |
| 20 | const auto noded = generative::noding::GeometryNoder::node(*geometry); |
| 21 | const auto graph = generative::noding::GeometryGraph(*noded); |
| 22 | |
| 23 | const auto owned_edges = graph.get_edges(); |
| 24 | ASSERT_THAT(owned_edges, SizeIs(4)); |
| 25 | std::vector<const geos::geom::Geometry*> edges; |
| 26 | std::transform( |
| 27 | owned_edges.begin(), |
| 28 | owned_edges.end(), |
| 29 | std::back_inserter(edges), |
| 30 | [](const std::unique_ptr<geos::geom::LineString>& edge) -> const geos::geom::Geometry* { |
| 31 | return edge.get(); |
| 32 | }); |
| 33 | |
| 34 | auto polygonizer = geos::operation::polygonize::Polygonizer(); |
| 35 | polygonizer.add(&edges); |
| 36 | |
| 37 | const auto polys = polygonizer.getPolygons(); |
| 38 | const auto dangles = polygonizer.getDangles(); |
| 39 | for (const auto& poly : polys) |
| 40 | { |
| 41 | generative::io::operator<<(std::cerr, *poly); |
| 42 | std::cerr << std::endl; |
| 43 | } |
| 44 | for (const auto& dangle : dangles) |
| 45 | { |
| 46 | generative::io::operator<<(std::cerr, *dangle); |
| 47 | std::cerr << std::endl; |
| 48 | } |
| 49 | |
| 50 | EXPECT_THAT(polys, SizeIs(1)); |
| 51 | EXPECT_THAT(dangles, SizeIs(0)); |
| 52 | |
| 53 | EXPECT_TRUE(polys.at(0)->equals(geometry.get())); |
| 54 | } |
| 55 | |
| 56 | TEST(PolygonizerTests, SimplePolygonWithDangles) |
| 57 | { |