1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
/**
* SPDX-License-Identifier: GPL-2.0-or-later
*
* This file is part of osm2pgsql (https://osm2pgsql.org/).
*
* Copyright (C) 2006-2021 by the osm2pgsql developer community.
* For a full list of authors see the git log.
*/
#include <catch.hpp>
#include "common-import.hpp"
#include "common-options.hpp"
static testing::db::import_t db;
static char const *const conf_file = "test_output_flex_relations.lua";
TEST_CASE("add relations")
{
options_t options = testing::opt_t().slim().flex(conf_file);
REQUIRE_NOTHROW(db.run_import(options, "r30 v1 dV\n"
"r31 v1 dV Tt1=yes\n"
"r32 v1 dV Tt2=yes\n"
"r33 v1 dV Tt1=yes,t2=yes\n"));
auto conn = db.db().connect();
CHECK(2 == conn.get_count("osm2pgsql_test_t1"));
CHECK(2 == conn.get_count("osm2pgsql_test_t2"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 31"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 33"));
options.append = true;
REQUIRE_NOTHROW(db.run_import(options, "r34 v1 dV\n"
"r35 v1 dV Tt1=yes\n"
"r36 v1 dV Tt2=yes\n"
"r37 v1 dV Tt1=yes,t2=yes\n"));
CHECK(4 == conn.get_count("osm2pgsql_test_t1"));
CHECK(4 == conn.get_count("osm2pgsql_test_t2"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 31"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 33"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 35"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 37"));
}
TEST_CASE("change relations")
{
options_t options = testing::opt_t().slim().flex(conf_file);
REQUIRE_NOTHROW(db.run_import(options, "r30 v1 dV\n"
"r31 v1 dV Tt1=yes\n"
"r32 v1 dV Tt2=yes\n"
"r33 v1 dV Tt1=yes,t2=yes\n"
"r34 v1 dV\n"
"r35 v1 dV Tt1=yes\n"
"r36 v1 dV Tt1=yes,t2=yes\n"));
options.append = true;
auto conn = db.db().connect();
CHECK(4 == conn.get_count("osm2pgsql_test_t1"));
CHECK(3 == conn.get_count("osm2pgsql_test_t2"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 31"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 33"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 35"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 36"));
SECTION("no tag, add tag t1")
{
REQUIRE_NOTHROW(db.run_import(options, "r34 v2 dV Tt1=yes\n"));
CHECK(5 == conn.get_count("osm2pgsql_test_t1"));
CHECK(3 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("no tag, add tag t1, t2")
{
REQUIRE_NOTHROW(db.run_import(options, "r34 v2 dV Tt1=yes,t2=yes\n"));
CHECK(5 == conn.get_count("osm2pgsql_test_t1"));
CHECK(4 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("one tag, remove tag t1")
{
REQUIRE_NOTHROW(db.run_import(options, "r35 v2 dV\n"));
CHECK(3 == conn.get_count("osm2pgsql_test_t1"));
CHECK(3 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("one tag, change tag t1 to t2")
{
REQUIRE_NOTHROW(db.run_import(options, "r35 v2 dV Tt2=yes\n"));
CHECK(3 == conn.get_count("osm2pgsql_test_t1"));
CHECK(4 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("one tag, add tag t2")
{
REQUIRE_NOTHROW(db.run_import(options, "r35 v2 dV Tt1=yes,t2=yes\n"));
CHECK(4 == conn.get_count("osm2pgsql_test_t1"));
CHECK(4 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("two tags, remove tag t1 and t2")
{
REQUIRE_NOTHROW(db.run_import(options, "r36 v2 dV\n"));
CHECK(3 == conn.get_count("osm2pgsql_test_t1"));
CHECK(2 == conn.get_count("osm2pgsql_test_t2"));
}
SECTION("two tags, remove only tag t1 not t2")
{
REQUIRE_NOTHROW(db.run_import(options, "r36 v2 dV Tt2=yes\n"));
CHECK(3 == conn.get_count("osm2pgsql_test_t1"));
CHECK(3 == conn.get_count("osm2pgsql_test_t2"));
}
}
TEST_CASE("delete relation")
{
options_t options = testing::opt_t().slim().flex(conf_file);
REQUIRE_NOTHROW(db.run_import(options, "r30 v1 dV\n"
"r31 v1 dV Tt1=yes\n"
"r32 v1 dV Tt2=yes\n"
"r33 v1 dV Tt1=yes,t2=yes\n"
"r34 v1 dV\n"
"r35 v1 dV Tt1=yes\n"
"r36 v1 dV Tt1=yes,t2=yes\n"));
options.append = true;
auto conn = db.db().connect();
CHECK(4 == conn.get_count("osm2pgsql_test_t1"));
CHECK(3 == conn.get_count("osm2pgsql_test_t2"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 31"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 33"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 35"));
CHECK(1 == conn.get_count("osm2pgsql_test_t1", "relation_id = 36"));
REQUIRE_NOTHROW(db.run_import(options, "r34 v2 dD\n"
"r35 v2 dD\n"
"r36 v2 dD\n"));
CHECK(2 == conn.get_count("osm2pgsql_test_t1"));
CHECK(2 == conn.get_count("osm2pgsql_test_t2"));
}
|