#include "catch.hpp" #include TEST_CASE("geometry has_empty") { SECTION("empty geometry") { mapnik::geometry::geometry_empty geom; REQUIRE(!mapnik::geometry::has_empty(geom)); } SECTION("geometry collection") { { mapnik::geometry::geometry_collection geom; REQUIRE(!mapnik::geometry::has_empty(geom)); } { mapnik::geometry::geometry_collection geom; mapnik::geometry::geometry_empty geom1; geom.emplace_back(std::move(geom1)); REQUIRE(mapnik::geometry::has_empty(geom)); } { mapnik::geometry::geometry_collection geom; mapnik::geometry::multi_line_string mls; mapnik::geometry::line_string line; mls.emplace_back(std::move(line)); geom.emplace_back(std::move(mls)); REQUIRE(mapnik::geometry::has_empty(geom)); } { mapnik::geometry::geometry_collection geom; mapnik::geometry::multi_line_string mls; mapnik::geometry::line_string line; line.add_coord(0, 0); mls.emplace_back(std::move(line)); geom.emplace_back(std::move(mls)); REQUIRE(!mapnik::geometry::has_empty(geom)); } } SECTION("point") { mapnik::geometry::point pt(10, 10); REQUIRE(!mapnik::geometry::has_empty(pt)); } SECTION("linestring") { { mapnik::geometry::line_string line; REQUIRE(!mapnik::geometry::has_empty(line)); } { mapnik::geometry::line_string line; line.add_coord(0, 0); line.add_coord(25, 25); line.add_coord(50, 50); REQUIRE(!mapnik::geometry::has_empty(line)); } } SECTION("polygon") { { mapnik::geometry::polygon poly; REQUIRE(!mapnik::geometry::has_empty(poly)); } { mapnik::geometry::polygon poly; mapnik::geometry::linear_ring ring; poly.set_exterior_ring(std::move(ring)); REQUIRE(!mapnik::geometry::has_empty(poly)); } { mapnik::geometry::polygon poly; mapnik::geometry::linear_ring ring; ring.add_coord(0, 0); ring.add_coord(1, 0); ring.add_coord(1, 1); ring.add_coord(0, 1); ring.add_coord(0, 0); poly.set_exterior_ring(std::move(ring)); REQUIRE(!mapnik::geometry::has_empty(poly)); } } SECTION("multi-point") { { mapnik::geometry::multi_point geom; REQUIRE(!mapnik::geometry::has_empty(geom)); } { mapnik::geometry::multi_point geom; geom.add_coord(0, 0); geom.add_coord(25, 25); geom.add_coord(50, 50); REQUIRE(!mapnik::geometry::has_empty(geom)); } } SECTION("multi-linestring") { { mapnik::geometry::multi_line_string geom; REQUIRE(!mapnik::geometry::has_empty(geom)); } { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; geom.emplace_back(std::move(line)); REQUIRE(mapnik::geometry::has_empty(geom)); } { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; line.add_coord(0, 0); geom.emplace_back(std::move(line)); REQUIRE(!mapnik::geometry::has_empty(geom)); } } SECTION("multi-polygon") { { mapnik::geometry::multi_polygon geom; REQUIRE(!mapnik::geometry::has_empty(geom)); } { mapnik::geometry::multi_polygon geom; mapnik::geometry::polygon poly; mapnik::geometry::linear_ring ring; poly.set_exterior_ring(std::move(ring)); geom.emplace_back(std::move(poly)); REQUIRE(mapnik::geometry::has_empty(geom)); } { mapnik::geometry::multi_polygon geom; mapnik::geometry::polygon poly; mapnik::geometry::linear_ring ring; ring.add_coord(0, 0); poly.set_exterior_ring(std::move(ring)); geom.emplace_back(std::move(poly)); REQUIRE(!mapnik::geometry::has_empty(geom)); } } }