@@ -67,3 +67,31 @@ TEST_CASE("multipoint_t with several points", "[NoDB]")
6767 REQUIRE (geometry_n (geom, 2 ) == geom::geometry_t {std::move (p1)});
6868 REQUIRE (geometry_n (geom, 3 ) == geom::geometry_t {std::move (p2)});
6969}
70+
71+ TEST_CASE (" create_multipoint from OSM data" , " [NoDB]" )
72+ {
73+ test_buffer_t buffer;
74+ buffer.add_node (" n10 x1 y0" );
75+ buffer.add_way (" w20 Nn1x1y1,n2x2y1" );
76+ buffer.add_node (" n11 x1 y1" );
77+ buffer.add_node (" n12 x3 y2" );
78+ buffer.add_way (" w21 Nn3x10y10,n4x10y11" );
79+ buffer.add_node (" n13 x3 y1" );
80+ buffer.add_relation (" r30 Mw20@" );
81+
82+ auto const geom = geom::create_multipoint (buffer.buffer ());
83+
84+ REQUIRE (geometry_type (geom) == " MULTIPOINT" );
85+ REQUIRE (dimension (geom) == 0 );
86+ REQUIRE (num_geometries (geom) == 4 );
87+
88+ auto const &c = geom.get <geom::multipoint_t >();
89+ REQUIRE (c[0 ] == geom::point_t {1 , 0 });
90+ REQUIRE (c[1 ] == geom::point_t {1 , 1 });
91+ REQUIRE (c[2 ] == geom::point_t {3 , 2 });
92+ REQUIRE (c[3 ] == geom::point_t {3 , 1 });
93+
94+ REQUIRE (area (geom) == Approx (0.0 ));
95+ REQUIRE (length (geom) == Approx (0.0 ));
96+ REQUIRE (centroid (geom) == geom::geometry_t {geom::point_t {2 , 1 }});
97+ }
0 commit comments