55
66static testing::db::import_t db;
77
8+ static char const *const conf_file = " test_output_flex_invalid_geom.lua" ;
9+
810TEST_CASE (" invalid way geometry should be ignored" )
911{
10- testing::opt_t options =
11- testing::opt_t ().slim ().flex (" test_output_flex.lua" ).srs (PROJ_LATLONG);
12-
13- REQUIRE_NOTHROW (
14- db.run_import (options,
15- " n10 v1 dV x10.0 y10.0\n "
16- " n11 v1 dV x10.0 y10.2\n "
17- " n12 v1 dV x10.2 y10.2\n "
18- " w20 v1 dV Thighway=primary Nn10,n12\n " // okay
19- " w21 v1 dV Thighway=primary Nn10,n13\n " )); // not okay
12+ options_t const options =
13+ testing::opt_t ().flex (conf_file).srs (PROJ_LATLONG);
14+
15+ REQUIRE_NOTHROW (db.run_import (
16+ options,
17+ " n10 v1 dV x10.0 y10.0\n "
18+ " n11 v1 dV x10.0 y10.2\n "
19+ " n12 v1 dV x10.2 y10.2\n "
20+ " n14 v1 dV x10.0 y10.0\n "
21+ " w20 v1 dV Thighway=primary Nn10,n12\n " // okay
22+ " w21 v1 dV Thighway=primary Nn10,n12,n13\n " // okay, unknown node ignored
23+ " w22 v1 dV Thighway=primary Nn10,n13\n " // not okay, unknown node leads to single-node line
24+ " w23 v1 dV Thighway=primary Nn10\n " // not okay, single node in way
25+ " w24 v1 dV Thighway=primary Nn10,n10\n " // not okay, same node twice
26+ " w25 v1 dV Thighway=primary Nn10,n14\n " )); // not okay, same location twice
27+
2028 auto conn = db.db ().connect ();
2129
22- CHECK (0 == conn.get_count (" osm2pgsql_test_point" ));
23- CHECK (1 == conn.get_count (" osm2pgsql_test_line" ));
30+ CHECK (2 == conn.get_count (" osm2pgsql_test_line" ));
2431 CHECK (0 == conn.get_count (" osm2pgsql_test_polygon" ));
25- CHECK (0 == conn.get_count (" osm2pgsql_test_route" ));
2632}
2733
2834TEST_CASE (" invalid area geometry from way should be ignored" )
2935{
30- testing:: opt_t options =
31- testing::opt_t ().slim (). flex (" test_output_flex.lua " ).srs (PROJ_LATLONG);
36+ options_t const options =
37+ testing::opt_t ().flex (conf_file ).srs (PROJ_LATLONG);
3238
3339 REQUIRE_NOTHROW (db.run_import (
3440 options,
3541 " n10 v1 dV x10.0 y10.0\n "
3642 " n11 v1 dV x10.0 y10.2\n "
3743 " n12 v1 dV x10.2 y10.2\n "
38- " w20 v1 dV Tnatural=wood Nn10,n11,n12,n10\n " // okay
39- " w21 v1 dV Tnatural=wood Nn10,n11,n12,n13,n10\n " // okay
40- " w22 v1 dV Tnatural=wood Nn10,n11,n12,n10,n11\n " // not okay
41- " w23 v1 dV Tnatural=wood Nn10,n11,n12\n " )); // not okay
44+ " w20 v1 dV Tnatural=wood Nn10,n11,n12,n10\n " // okay
45+ " w21 v1 dV Tnatural=wood Nn10,n11,n12,n13,n10\n " // okay, unknown node ignored
46+ " w22 v1 dV Tnatural=wood Nn10,n11,n12,n10,n11\n " // not okay, duplicate segment
47+ " w23 v1 dV Tnatural=wood Nn10,n11,n12\n " )); // not okay, ring not closed
4248
4349 auto conn = db.db ().connect ();
4450
45- CHECK (0 == conn.get_count (" osm2pgsql_test_point" ));
4651 CHECK (0 == conn.get_count (" osm2pgsql_test_line" ));
4752 CHECK (2 == conn.get_count (" osm2pgsql_test_polygon" ));
48- CHECK (0 == conn.get_count (" osm2pgsql_test_route" ));
4953}
5054
51- TEST_CASE (" invalid area geometry from way should be ignored 2 " )
55+ TEST_CASE (" area with self-intersection from way should be ignored" )
5256{
53- testing:: opt_t options =
54- testing::opt_t ().slim (). flex (" test_output_flex.lua " ).srs (PROJ_LATLONG);
57+ options_t const options =
58+ testing::opt_t ().flex (conf_file ).srs (PROJ_LATLONG);
5559
5660 REQUIRE_NOTHROW (db.run_import (
5761 options, " n10 v1 dV x1.70 y1.78\n "
5862 " n11 v1 dV x1.87 y1.68\n "
5963 " n12 v1 dV x1.84 y1.84\n "
6064 " n13 v1 dV x1.82 y1.67\n "
61- " w20 v1 dV Tamenity=parking Nn10,n11,n12,n13,n10\n " ));
65+ " w20 v1 dV Tnatural=wood Nn10,n11,n12,n13,n10\n " ));
6266
6367 auto conn = db.db ().connect ();
6468
65- CHECK (0 == conn.get_count (" osm2pgsql_test_point" ));
6669 CHECK (0 == conn.get_count (" osm2pgsql_test_line" ));
6770 CHECK (0 == conn.get_count (" osm2pgsql_test_polygon" ));
68- CHECK (0 == conn.get_count (" osm2pgsql_test_route" ));
6971}
7072
7173TEST_CASE (" invalid area geometry from relation should be ignored" )
7274{
73- testing:: opt_t options =
74- testing::opt_t ().slim (). flex (" test_output_flex.lua " ).srs (PROJ_LATLONG);
75+ options_t const options =
76+ testing::opt_t ().flex (conf_file ).srs (PROJ_LATLONG);
7577
7678 REQUIRE_NOTHROW (db.run_import (options,
7779 " n10 v1 dV x10.0 y10.0\n "
@@ -83,14 +85,12 @@ TEST_CASE("invalid area geometry from relation should be ignored")
8385 " r30 v1 dV Ttype=multipolygon,landuse=forest "
8486 " Mw20@,w21@\n " // okay
8587 " r31 v1 dV Ttype=multipolygon,landuse=forest "
86- " Mw20@\n " // not okay
88+ " Mw20@\n " // not okay, ring not closed
8789 " r32 v1 dV Ttype=multipolygon,landuse=forest "
88- " Mw20@,w22@\n " )); // not okay
90+ " Mw20@,w22@\n " )); // not okay, missing way
8991
9092 auto conn = db.db ().connect ();
9193
92- CHECK (0 == conn.get_count (" osm2pgsql_test_point" ));
9394 CHECK (0 == conn.get_count (" osm2pgsql_test_line" ));
9495 CHECK (1 == conn.get_count (" osm2pgsql_test_polygon" ));
95- CHECK (0 == conn.get_count (" osm2pgsql_test_route" ));
9696}
0 commit comments