]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/update/interpolation.feature
Merge pull request #782 from lonvia/rework-postcodes
[nominatim.git] / test / bdd / db / update / interpolation.feature
1 @DB
2 Feature: Update of address interpolations
3     Test the interpolated address are updated correctly
4
5     Scenario: new interpolation added to existing street
6       Given the scene parallel-road
7       And the places
8           | osm | class   | type         | name         | geometry |
9           | W2  | highway | unclassified | Sun Way      | :w-north |
10           | W3  | highway | unclassified | Cloud Street | :w-south |
11       And the ways
12           | id  | nodes |
13           | 10  | 1,100,101,102,2 |
14       When importing
15       Then W10 expands to no interpolation
16       When updating places
17           | osm | class | type  | housenr | geometry |
18           | N1  | place | house | 2       | :n-middle-w |
19           | N2  | place | house | 6       | :n-middle-e |
20       And updating places
21           | osm | class | type   | addr+interpolation | geometry |
22           | W10 | place | houses | even               | :w-middle |
23       Then placex contains
24           | object | parent_place_id |
25           | N1     | W2 |
26           | N2     | W2 |
27       And W10 expands to interpolation
28           | parent_place_id | start | end |
29           | W2              | 2     | 6 |
30
31     Scenario: addr:street added to interpolation
32       Given the scene parallel-road
33       And the places
34           | osm | class | type  | housenr | geometry |
35           | N1  | place | house | 2       | :n-middle-w |
36           | N2  | place | house | 6       | :n-middle-e |
37       And the places
38           | osm | class | type   | addr+interpolation | geometry |
39           | W10 | place | houses | even   | :w-middle |
40       And the places
41           | osm | class   | type         | name         | geometry |
42           | W2  | highway | unclassified | Sun Way      | :w-north |
43           | W3  | highway | unclassified | Cloud Street | :w-south |
44       And the ways
45           | id  | nodes |
46           | 10  | 1,100,101,102,2 |
47       When importing
48       Then placex contains
49           | object | parent_place_id |
50           | N1     | W2 |
51           | N2     | W2 |
52       And W10 expands to interpolation
53           | parent_place_id | start | end |
54           | W2              | 2     | 6 |
55       When updating places
56           | osm | class   | type    | addr+interpolation | street       | geometry |
57           | W10 | place   | houses  | even    | Cloud Street | :w-middle |
58       Then placex contains
59           | object | parent_place_id |
60           | N1     | W3 |
61           | N2     | W3 |
62       And W10 expands to interpolation
63           | parent_place_id | start | end |
64           | W3              | 2     | 6 |
65
66     Scenario: addr:street added to housenumbers
67       Given the scene parallel-road
68       And the places
69           | osm | class | type  | housenr | geometry |
70           | N1  | place | house | 2       | :n-middle-w |
71           | N2  | place | house | 6       | :n-middle-e |
72       And the places
73           | osm | class | type   | addr+interpolation | geometry |
74           | W10 | place | houses | even   | :w-middle |
75       And the places
76           | osm | class   | type         | name         | geometry |
77           | W2  | highway | unclassified | Sun Way      | :w-north |
78           | W3  | highway | unclassified | Cloud Street | :w-south |
79       And the ways
80           | id  | nodes |
81           | 10  | 1,100,101,102,2 |
82       When importing
83       Then placex contains
84           | object | parent_place_id |
85           | N1     | W2 |
86           | N2     | W2 |
87       And W10 expands to interpolation
88           | parent_place_id | start | end |
89           | W2              | 2     | 6 |
90       When updating places
91           | osm | class | type  | street      | housenr | geometry |
92           | N1  | place | house | Cloud Street| 2       | :n-middle-w |
93           | N2  | place | house | Cloud Street| 6       | :n-middle-e |
94       Then placex contains
95           | object | parent_place_id |
96           | N1     | W3 |
97           | N2     | W3 |
98       And W10 expands to interpolation
99           | parent_place_id | start | end |
100           | W3              | 2     | 6 |
101
102     Scenario: interpolation tag removed
103       Given the scene parallel-road
104       And the places
105           | osm | class | type  | housenr | geometry |
106           | N1  | place | house | 2       | :n-middle-w |
107           | N2  | place | house | 6       | :n-middle-e |
108       And the places
109           | osm | class | type   | addr+interpolation | geometry |
110           | W10 | place | houses | even   | :w-middle |
111       And the places
112           | osm | class   | type         | name         | geometry |
113           | W2  | highway | unclassified | Sun Way      | :w-north |
114           | W3  | highway | unclassified | Cloud Street | :w-south |
115       And the ways
116           | id  | nodes |
117           | 10  | 1,100,101,102,2 |
118       When importing
119       Then placex contains
120           | object | parent_place_id |
121           | N1     | W2 |
122           | N2     | W2 |
123       And W10 expands to interpolation
124           | parent_place_id | start | end |
125           | W2              | 2     | 6 |
126       When marking for delete W10
127       Then W10 expands to no interpolation
128       And placex contains
129           | object | parent_place_id |
130           | N1     | W2 |
131           | N2     | W2 |
132
133     Scenario: referenced road added
134       Given the scene parallel-road
135       And the places
136           | osm | class | type  | housenr | geometry |
137           | N1  | place | house | 2       | :n-middle-w |
138           | N2  | place | house | 6       | :n-middle-e |
139       And the places
140           | osm | class   | type    | addr+interpolation | street      | geometry |
141           | W10 | place   | houses  | even    | Cloud Street| :w-middle |
142       And the places
143           | osm | class   | type         | name     | geometry |
144           | W2  | highway | unclassified | Sun Way  | :w-north |
145       And the ways
146           | id  | nodes |
147           | 10  | 1,100,101,102,2 |
148       When importing
149       Then placex contains
150           | object | parent_place_id |
151           | N1     | W2 |
152           | N2     | W2 |
153       And W10 expands to interpolation
154           | parent_place_id | start | end |
155           | W2              | 2     | 6 |
156       When updating places
157           | osm | class   | type         | name         | geometry |
158           | W3  | highway | unclassified | Cloud Street | :w-south |
159       Then placex contains
160           | object | parent_place_id |
161           | N1     | W3 |
162           | N2     | W3 |
163       And W10 expands to interpolation
164           | parent_place_id | start | end |
165           | W3              | 2     | 6 |
166
167     Scenario: referenced road deleted
168       Given the scene parallel-road
169       And the places
170           | osm | class | type  | housenr | geometry |
171           | N1  | place | house | 2       | :n-middle-w |
172           | N2  | place | house | 6       | :n-middle-e |
173       And the places
174           | osm | class   | type    | addr+interpolation | street      | geometry |
175           | W10 | place   | houses  | even    | Cloud Street| :w-middle |
176       And the places
177           | osm | class   | type         | name         | geometry |
178           | W2  | highway | unclassified | Sun Way      | :w-north |
179           | W3  | highway | unclassified | Cloud Street | :w-south |
180       And the ways
181           | id  | nodes |
182           | 10  | 1,100,101,102,2 |
183       When importing
184       Then placex contains
185           | object | parent_place_id |
186           | N1     | W3 |
187           | N2     | W3 |
188       And W10 expands to interpolation
189           | parent_place_id | start | end |
190           | W3              | 2     | 6 |
191       When marking for delete W3
192       Then placex contains
193           | object | parent_place_id |
194           | N1     | W2 |
195           | N2     | W2 |
196       And W10 expands to interpolation
197           | parent_place_id | start | end |
198           | W2              | 2     | 6 |
199
200     Scenario: building becomes interpolation
201       Given the scene building-with-parallel-streets
202       And the places
203           | osm | class    | type  | housenr | geometry |
204           | W1  | place    | house | 3       | :w-building |
205       And the places
206           | osm | class   | type         | name         | geometry |
207           | W2  | highway | unclassified | Cloud Street | :w-south |
208       When importing
209       Then placex contains
210           | object | parent_place_id |
211           | W1     | W2 |
212       Given the ways
213           | id  | nodes |
214           | 1   | 1,100,101,102,2 |
215       When updating places
216           | osm | class | type  | housenr | geometry |
217           | N1  | place | house | 2       | :n-north-w |
218           | N2  | place | house | 6       | :n-north-e |
219       And updating places
220           | osm | class   | type    | addr+interpolation | street      | geometry |
221           | W1  | place   | houses  | even    | Cloud Street| :w-north |
222       Then placex has no entry for W1
223       And W1 expands to interpolation
224           | parent_place_id | start | end |
225           | W2              | 2     | 6 |
226
227     Scenario: interpolation becomes building
228       Given the scene building-with-parallel-streets
229       And the places
230           | osm | class | type  | housenr | geometry |
231           | N1  | place | house | 2       | :n-north-w |
232           | N2  | place | house | 6       | :n-north-e |
233       And the places
234           | osm | class   | type         | name         | geometry |
235           | W2  | highway | unclassified | Cloud Street | :w-south |
236       And the ways
237           | id  | nodes |
238           | 1   | 1,100,101,102,2 |
239       And the places
240           | osm | class   | type    | addr+interpolation | street      | geometry |
241           | W1  | place   | houses  | even    | Cloud Street| :w-north |
242       When importing
243       Then placex has no entry for W1
244       And W1 expands to interpolation
245           | parent_place_id | start | end |
246           | W2              | 2     | 6 |
247       When updating places
248           | osm | class    | type  | housenr | geometry |
249           | W1  | place    | house | 3       | :w-building |
250       Then placex contains
251           | object | parent_place_id |
252           | W1     | W2 |
253
254     Scenario: housenumbers added to interpolation
255       Given the scene building-with-parallel-streets
256       And the places
257           | osm | class   | type         | name         | geometry |
258           | W2  | highway | unclassified | Cloud Street | :w-south |
259       And the ways
260           | id  | nodes |
261           | 1   | 1,100,101,102,2 |
262       And the places
263           | osm | class   | type    | addr+interpolation | geometry |
264           | W1  | place   | houses  | even    | :w-north |
265       When importing
266       Then W1 expands to no interpolation
267       When updating places
268           | osm | class | type  | housenr | geometry |
269           | N1  | place | house | 2       | :n-north-w |
270           | N2  | place | house | 6       | :n-north-e |
271       And updating places
272           | osm | class   | type    | addr+interpolation | street      | geometry |
273           | W1  | place   | houses  | even    | Cloud Street| :w-north |
274       Then W1 expands to interpolation
275           | parent_place_id | start | end |
276           | W2              | 2     | 6 |
277
278     @Fail
279     Scenario: housenumber added in middle of interpolation
280       Given the grid
281           | 1 |  |  |   |  | 2 |
282           | 3 |  |  | 4 |  | 5 |
283       And the places
284           | osm | class   | type         | name         | geometry |
285           | W1  | highway | unclassified | Cloud Street | 1, 2     |
286       And the ways
287           | id  | nodes |
288           | 2   | 3,4,5 |
289       And the places
290           | osm | class   | type    | addr+interpolation | geometry |
291           | W2  | place   | houses  | even    | 3,4,5    |
292       And the places
293           | osm | class | type  | housenr |
294           | N3  | place | house | 2       |
295           | N5  | place | house | 10      |
296       When importing
297       Then W2 expands to interpolation
298           | parent_place_id | start | end | geometry |
299           | W1              | 2     | 10  | 3,4,5    |
300       When updating places
301           | osm | class | type  | housenr |
302           | N4  | place | house | 6       |
303       Then W2 expands to interpolation
304           | parent_place_id | start | end | geometry |
305           | W1              | 2     | 6   | 3,4      |
306           | W1              | 6     | 10  | 4,5      |
307
308     @Fail
309     Scenario: housenumber removed in middle of interpolation
310       Given the grid
311           | 1 |  |  |   |  | 2 |
312           | 3 |  |  | 4 |  | 5 |
313       And the places
314           | osm | class   | type         | name         | geometry |
315           | W1  | highway | unclassified | Cloud Street | 1, 2     |
316       And the ways
317           | id  | nodes |
318           | 2   | 3,4,5 |
319       And the places
320           | osm | class   | type    | addr+interpolation | geometry |
321           | W2  | place   | houses  | even    | 3,4,5    |
322       And the places
323           | osm | class | type  | housenr |
324           | N3  | place | house | 2       |
325           | N4  | place | house | 6       |
326           | N5  | place | house | 10      |
327       When importing
328       Then W2 expands to interpolation
329           | parent_place_id | start | end | geometry |
330           | W1              | 2     | 6   | 3,4      |
331           | W1              | 6     | 10  | 4,5      |
332       When marking for delete N4
333       Then W2 expands to interpolation
334           | parent_place_id | start | end | geometry |
335           | W1              | 2     | 10  | 3,4,5    |
336
337     @Fail
338     Scenario: Change the start housenumber
339       Given the grid
340           | 1 |  | 2 |
341           | 3 |  | 4 |
342       And the places
343           | osm | class   | type         | name         | geometry |
344           | W1  | highway | unclassified | Cloud Street | 1, 2     |
345       And the ways
346           | id  | nodes |
347           | 2   | 3,4   |
348       And the places
349           | osm | class   | type    | addr+interpolation | geometry |
350           | W2  | place   | houses  | even    | 3,4      |
351       And the places
352           | osm | class | type  | housenr |
353           | N3  | place | house | 2       |
354           | N4  | place | house | 6       |
355       When importing
356       Then W2 expands to interpolation
357           | parent_place_id | start | end | geometry |
358           | W1              | 2     | 6   | 3,4      |
359       When updating places
360           | osm | class | type  | housenr |
361           | N4  | place | house | 8       |
362       Then W2 expands to interpolation
363           | parent_place_id | start | end | geometry |
364           | W1              | 2     | 8   | 3,4      |
365