diff --git a/tests/polygonizer-tests.cpp b/tests/polygonizer-tests.cpp index 5c4edf6..3b9a41a 100644 --- a/tests/polygonizer-tests.cpp +++ b/tests/polygonizer-tests.cpp @@ -83,3 +83,51 @@ TEST(PolygonizerTests, SimplePolygonWithDangles) EXPECT_TRUE(dangles.at(0)->equals(dangle1.get())); EXPECT_TRUE(dangles.at(1)->equals(dangle2.get())); } + +TEST(PolygonizerTests, DISABLED_MissingData) +{ + const auto* factory = geos::geom::GeometryFactory::getDefaultInstance(); + auto graph = generative::noding::GeometryGraph(*factory); + + std::vector nodes; + nodes.emplace_back( + 0, std::unique_ptr(factory->createPoint(geos::geom::Coordinate(0, 0)))); + nodes.emplace_back( + 1, std::unique_ptr(factory->createPoint(geos::geom::Coordinate(1, 0)))); + nodes.emplace_back( + 2, std::unique_ptr(factory->createPoint(geos::geom::Coordinate(2, 0)))); + nodes.emplace_back( + 3, std::unique_ptr(factory->createPoint(geos::geom::Coordinate(0, 1)))); + nodes.emplace_back( + 4, std::unique_ptr(factory->createPoint(geos::geom::Coordinate(1, 1)))); + graph.set_nodes(std::move(nodes)); + + graph.add_edge(0, 1); + // TODO: This is the culprit - I think this edge is incorrectly noded. + graph.add_edge(0, 2); + graph.add_edge(1, 2); + graph.add_edge(1, 3); + graph.add_edge(2, 4); + graph.add_edge(3, 4); + + const auto owned_edges = graph.get_edges(); + std::vector edges; + std::transform( + owned_edges.begin(), + owned_edges.end(), + std::back_inserter(edges), + [](const std::unique_ptr& edge) -> const geos::geom::Geometry* { + return edge.get(); + }); + + auto polygonizer = geos::operation::polygonize::Polygonizer(); + polygonizer.add(&edges); + + ASSERT_FALSE(polygonizer.hasInvalidRingLines()); + + const auto polys = polygonizer.getPolygons(); + const auto dangles = polygonizer.getDangles(); + + EXPECT_THAT(polys, SizeIs(1)); + EXPECT_THAT(dangles, SizeIs(1)); +}