File: test-output-flex-relations.cpp

package info (click to toggle)
osm2pgsql 1.4.1%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 5,124 kB
  • sloc: cpp: 41,466; ansic: 1,366; python: 564; sh: 19; makefile: 15
file content (154 lines) | stat: -rw-r--r-- 5,758 bytes parent folder | download
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"));
}