File: test-output-flex-relations.cpp

package info (click to toggle)
osm2pgsql 2.2.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,772 kB
  • sloc: cpp: 60,940; python: 1,115; ansic: 763; sh: 25; makefile: 14
file content (158 lines) | stat: -rw-r--r-- 5,783 bytes parent folder | download | duplicates (2)
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
155
156
157
158
/**
 * SPDX-License-Identifier: GPL-2.0-or-later
 *
 * This file is part of osm2pgsql (https://osm2pgsql.org/).
 *
 * Copyright (C) 2006-2025 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"

namespace {

testing::db::import_t db;

char const *const CONF_FILE = "test_output_flex_relations.lua";

} // anonymous namespace

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"));
}