File: relation-changes.feature

package info (click to toggle)
osm2pgsql 1.8.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,536 kB
  • sloc: cpp: 46,707; ansic: 1,804; python: 797; sh: 25; makefile: 14
file content (244 lines) | stat: -rw-r--r-- 7,496 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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Feature: Handling changes to relations

    Background:
        Given the lua style
            """
            local rel_table = osm2pgsql.define_area_table('osm2pgsql_test_relations', {
                { column = 'tags', type = 'hstore' },
                { column = 'geom', type = 'geometry' }
            })

            function osm2pgsql.process_relation(object)
                if object.tags.type == 'multipolygon' then
                    rel_table:add_row{
                        tags = object.tags,
                        geom = { create = 'area' }
                    }
                end
            end
            """

    Scenario: Changing type adds relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 0 rows

        Given the OSM data
            """
            r30 v2 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has 1 row


    Scenario: Changing way adds relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 0 rows

        Given the OSM data
            """
            w21 v2 dV Nn12,n13,n10
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has 1 row


    Scenario: Changing node adds relation
        Given the 0.1 grid with origin 10.0 10.0
            | 10 | 11 | 12 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n10
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 0 rows

        Given the OSM data
            """
            n12 v2 dV x10.1 y10.1
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has 1 row


    Scenario: Changing memberlist adds relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Ttype=multipolygon Mw20@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 0 rows

        Given the OSM data
            """
            r30 v2 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has 1 row


    Scenario: Changing type deletes relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 1 row

        Given the OSM data
            """
            r30 v2 dV Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has 0 rows


    Scenario Outline: Changing ways in valid relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 1 row

        Given the OSM data
            """
            w21 v2 dV <new nodelist>
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has <expected rows> rows

        Examples:
            | new nodelist | expected rows |
            | Nn12,n13     | 0             |
            | Nn10,n13,n12 | 1             |


    Scenario Outline: Changing nodes in a valid relation
        Given the 0.1 grid with origin 10.0 10.0
            | 10 | 11 |
            |    | 12 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n10
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 1 row

        Given the OSM data
            """
            n12 v2 dV <new coordinates>
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has <expected rows> rows

        Examples:
            | new coordinates | expected rows |
            | x10.1 y10.0     | 0             |
            | x10.05 y10.1    | 1             |


    Scenario Outline: Changing memberlist in valid relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Ttype=multipolygon Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations has 1 row

        Given the OSM data
            """
            r30 v2 dV Ttype=multipolygon <new memberlist>
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations has <expected rows> rows

        Examples:
            | new memberlist | expected rows |
            | Mw20@          | 0             |
            | Mw21@,w20@     | 1             |


    Scenario: Changing tags keeps relation
        Given the grid
            | 13 | 12 |
            | 10 | 11 |
        And the OSM data
            """
            w20 v1 dV Nn10,n11,n12
            w21 v1 dV Nn12,n13,n10
            r30 v1 dV Ttype=multipolygon,natural=wood Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim |
        Then table osm2pgsql_test_relations contains exactly
            | area_id | tags->'natural' | tags->'landuse' |
            | -30     | wood            | NULL            |

        Given the OSM data
            """
            r30 v2 dV Ttype=multipolygon,landuse=forest Mw20@,w21@
            """
        When running osm2pgsql flex with parameters
            | --slim | --append |
        Then table osm2pgsql_test_relations contains exactly
            | area_id | tags->'natural' | tags->'landuse' |
            | -30     | NULL            | forest          |