]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/update/interpolation.feature
Merge pull request #2359 from lonvia/switch-bdd-tests-to-api-search
[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     Scenario: housenumber added in middle of interpolation
279       Given the grid
280           | 1 |  |  |   |  | 2 |
281           | 3 |  |  | 4 |  | 5 |
282       And the places
283           | osm | class   | type         | name         | geometry |
284           | W1  | highway | unclassified | Cloud Street | 1, 2     |
285       And the ways
286           | id  | nodes |
287           | 2   | 3,4,5 |
288       And the places
289           | osm | class   | type    | addr+interpolation | geometry |
290           | W2  | place   | houses  | even    | 3,4,5    |
291       And the places
292           | osm | class | type  | housenr |
293           | N3  | place | house | 2       |
294           | N5  | place | house | 10      |
295       When importing
296       Then W2 expands to interpolation
297           | parent_place_id | start | end | geometry |
298           | W1              | 2     | 10  | 3,4,5    |
299       When updating places
300           | osm | class | type  | housenr |
301           | N4  | place | house | 6       |
302       Then W2 expands to interpolation
303           | parent_place_id | start | end | geometry |
304           | W1              | 2     | 6   | 3,4      |
305           | W1              | 6     | 10  | 4,5      |
306
307     @Fail
308     Scenario: housenumber removed in middle of interpolation
309       Given the grid
310           | 1 |  |  |   |  | 2 |
311           | 3 |  |  | 4 |  | 5 |
312       And the places
313           | osm | class   | type         | name         | geometry |
314           | W1  | highway | unclassified | Cloud Street | 1, 2     |
315       And the ways
316           | id  | nodes |
317           | 2   | 3,4,5 |
318       And the places
319           | osm | class   | type    | addr+interpolation | geometry |
320           | W2  | place   | houses  | even    | 3,4,5    |
321       And the places
322           | osm | class | type  | housenr |
323           | N3  | place | house | 2       |
324           | N4  | place | house | 6       |
325           | N5  | place | house | 10      |
326       When importing
327       Then W2 expands to interpolation
328           | parent_place_id | start | end | geometry |
329           | W1              | 2     | 6   | 3,4      |
330           | W1              | 6     | 10  | 4,5      |
331       When marking for delete N4
332       Then W2 expands to interpolation
333           | parent_place_id | start | end | geometry |
334           | W1              | 2     | 10  | 3,4,5    |
335
336     Scenario: Change the start housenumber
337       Given the grid
338           | 1 |  | 2 |
339           | 3 |  | 4 |
340       And the places
341           | osm | class   | type         | name         | geometry |
342           | W1  | highway | unclassified | Cloud Street | 1, 2     |
343       And the ways
344           | id  | nodes |
345           | 2   | 3,4   |
346       And the places
347           | osm | class   | type    | addr+interpolation | geometry |
348           | W2  | place   | houses  | even    | 3,4      |
349       And the places
350           | osm | class | type  | housenr |
351           | N3  | place | house | 2       |
352           | N4  | place | house | 6       |
353       When importing
354       Then W2 expands to interpolation
355           | parent_place_id | start | end | geometry |
356           | W1              | 2     | 6   | 3,4      |
357       When updating places
358           | osm | class | type  | housenr |
359           | N4  | place | house | 8       |
360       Then W2 expands to interpolation
361           | parent_place_id | start | end | geometry |
362           | W1              | 2     | 8   | 3,4      |
363