]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/update/interpolation.feature
Merge pull request #2856 from t-tomek/patch-1
[nominatim.git] / test / bdd / db / update / interpolation.feature
index 5c07f434e1ec715b9132d4ab620babf0bd3fc56d..421fdc011ef04a844f5da5c0436922cfa8ea0490 100644 (file)
@@ -3,47 +3,55 @@ Feature: Update of address interpolations
     Test the interpolated address are updated correctly
 
     Scenario: new interpolation added to existing street
     Test the interpolated address are updated correctly
 
     Scenario: new interpolation added to existing street
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 | 99 | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Sun Way      | :w-north |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Sun Way      | 10,11    |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2   |
       When importing
       Then W10 expands to no interpolation
       When updating places
       When importing
       Then W10 expands to no interpolation
       When updating places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And updating places
           | osm | class | type   | addr+interpolation | geometry |
       And updating places
           | osm | class | type   | addr+interpolation | geometry |
-          | W10 | place | houses | even               | :w-middle |
+          | W10 | place | houses | even               | 1,2      |
       Then placex contains
           | object | parent_place_id |
           | N1     | W2 |
           | N2     | W2 |
       And W10 expands to interpolation
       Then placex contains
           | object | parent_place_id |
           | N1     | W2 |
           | N2     | W2 |
       And W10 expands to interpolation
-          | parent_place_id | start | end |
-          | W2              | 4     | 4   |
+          | parent_place_id | start | end | geometry |
+          | W2              | 4     | 4   | 99       |
 
     Scenario: addr:street added to interpolation
 
     Scenario: addr:street added to interpolation
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
-          | W10 | place | houses | even   | :w-middle |
+          | W10 | place | houses | even               | 1,2      |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Sun Way      | :w-north |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Sun Way      | 10,11    |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2 |
       When importing
       Then placex contains
           | object | parent_place_id |
       When importing
       Then placex contains
           | object | parent_place_id |
@@ -54,7 +62,7 @@ Feature: Update of address interpolations
           | W2              | 4     | 4   |
       When updating places
           | osm | class   | type    | addr+interpolation | street       | geometry |
           | W2              | 4     | 4   |
       When updating places
           | osm | class   | type    | addr+interpolation | street       | geometry |
-          | W10 | place   | houses  | even    | Cloud Street | :w-middle |
+          | W10 | place   | houses  | even               | Cloud Street | 1,2      |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
@@ -64,21 +72,25 @@ Feature: Update of address interpolations
           | W3              | 4     | 4   |
 
     Scenario: addr:street added to housenumbers
           | W3              | 4     | 4   |
 
     Scenario: addr:street added to housenumbers
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
-          | W10 | place | houses | even   | :w-middle |
+          | W10 | place | houses | even               | 1,2      |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Sun Way      | :w-north |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Sun Way      | 10,11    |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2 |
       When importing
       Then placex contains
           | object | parent_place_id |
       When importing
       Then placex contains
           | object | parent_place_id |
@@ -88,9 +100,9 @@ Feature: Update of address interpolations
           | parent_place_id | start | end |
           | W2              | 4     | 4 |
       When updating places
           | parent_place_id | start | end |
           | W2              | 4     | 4 |
       When updating places
-          | osm | class | type  | street      | housenr | geometry |
-          | N1  | place | house | Cloud Street| 2       | :n-middle-w |
-          | N2  | place | house | Cloud Street| 6       | :n-middle-e |
+          | osm | class | type  | street      | housenr |
+          | N1  | place | house | Cloud Street| 2       |
+          | N2  | place | house | Cloud Street| 6       |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
@@ -100,21 +112,25 @@ Feature: Update of address interpolations
           | W3              | 4     | 4   |
 
     Scenario: interpolation tag removed
           | W3              | 4     | 4   |
 
     Scenario: interpolation tag removed
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
       And the places
           | osm | class | type   | addr+interpolation | geometry |
-          | W10 | place | houses | even   | :w-middle |
+          | W10 | place | houses | even               | 1,2      |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Sun Way      | :w-north |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Sun Way      | 10,11    |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2 |
       When importing
       Then placex contains
           | object | parent_place_id |
       When importing
       Then placex contains
           | object | parent_place_id |
@@ -131,20 +147,24 @@ Feature: Update of address interpolations
           | N2     | W2 |
 
     Scenario: referenced road added
           | N2     | W2 |
 
     Scenario: referenced road added
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
-          | W10 | place   | houses  | even    | Cloud Street| :w-middle |
+          | W10 | place   | houses  | even               | Cloud Street| 1,2      |
       And the places
           | osm | class   | type         | name     | geometry |
       And the places
           | osm | class   | type         | name     | geometry |
-          | W2  | highway | unclassified | Sun Way  | :w-north |
+          | W2  | highway | unclassified | Sun Way  | 10,11    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2   |
       When importing
       Then placex contains
           | object | parent_place_id |
       When importing
       Then placex contains
           | object | parent_place_id |
@@ -155,7 +175,7 @@ Feature: Update of address interpolations
           | W2              | 4     | 4 |
       When updating places
           | osm | class   | type         | name         | geometry |
           | W2              | 4     | 4 |
       When updating places
           | osm | class   | type         | name         | geometry |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
       Then placex contains
           | object | parent_place_id |
           | N1     | W3 |
@@ -165,21 +185,25 @@ Feature: Update of address interpolations
           | W3              | 4     | 4   |
 
     Scenario: referenced road deleted
           | W3              | 4     | 4   |
 
     Scenario: referenced road deleted
-      Given the scene parallel-road
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    |   |    |   |    |
+          | 20 |   |    |   | 21 |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-middle-w |
-          | N2  | place | house | 6       | :n-middle-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
-          | W10 | place   | houses  | even    | Cloud Street| :w-middle |
+          | W10 | place   | houses  | even               | Cloud Street| 1,2      |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Sun Way      | :w-north |
-          | W3  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Sun Way      | 10,11    |
+          | W3  | highway | unclassified | Cloud Street | 20,21    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 10  | 1,100,101,102,2 |
+          | 10  | 1,2 |
       When importing
       Then placex contains
           | object | parent_place_id |
       When importing
       Then placex contains
           | object | parent_place_id |
@@ -198,79 +222,85 @@ Feature: Update of address interpolations
           | W2              | 4     | 4   |
 
     Scenario: building becomes interpolation
           | W2              | 4     | 4   |
 
     Scenario: building becomes interpolation
-      Given the scene building-with-parallel-streets
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    | 4 |    | 3 |    |
       And the places
       And the places
-          | osm | class    | type  | housenr | geometry |
-          | W1  | place    | house | 3       | :w-building |
+          | osm | class    | type  | housenr | geometry    |
+          | W1  | place    | house | 3       | (1,2,3,4,1) |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Cloud Street | 10,11    |
       When importing
       Then placex contains
           | object | parent_place_id |
           | W1     | W2 |
       Given the ways
           | id  | nodes |
       When importing
       Then placex contains
           | object | parent_place_id |
           | W1     | W2 |
       Given the ways
           | id  | nodes |
-          | 1   | 1,100,101,102,2 |
+          | 1   | 1,2   |
       When updating places
       When updating places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-north-w |
-          | N2  | place | house | 6       | :n-north-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And updating places
           | osm | class   | type    | addr+interpolation | street      | geometry |
       And updating places
           | osm | class   | type    | addr+interpolation | street      | geometry |
-          | W1  | place   | houses  | even    | Cloud Street| :w-north |
+          | W1  | place   | houses  | even               | Cloud Street| 1,2      |
       Then placex has no entry for W1
       And W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
 
     Scenario: interpolation becomes building
       Then placex has no entry for W1
       And W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
 
     Scenario: interpolation becomes building
-      Given the scene building-with-parallel-streets
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
+          |    | 4 |    | 3 |    |
       And the places
       And the places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-north-w |
-          | N2  | place | house | 6       | :n-north-e |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Cloud Street | 10,11    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 1   | 1,100,101,102,2 |
+          | 1   | 1,2 |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
       And the places
           | osm | class   | type    | addr+interpolation | street      | geometry |
-          | W1  | place   | houses  | even    | Cloud Street| :w-north |
+          | W1  | place   | houses  | even               | Cloud Street| 1,2      |
       When importing
       Then placex has no entry for W1
       And W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
       When updating places
       When importing
       Then placex has no entry for W1
       And W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
       When updating places
-          | osm | class    | type  | housenr | geometry |
-          | W1  | place    | house | 3       | :w-building |
+          | osm | class    | type  | housenr | geometry    |
+          | W1  | place    | house | 3       | (1,2,3,4,1) |
       Then placex contains
           | object | parent_place_id |
           | W1     | W2 |
       Then placex contains
           | object | parent_place_id |
           | W1     | W2 |
+      And W1 expands to no interpolation
 
     Scenario: housenumbers added to interpolation
 
     Scenario: housenumbers added to interpolation
-      Given the scene building-with-parallel-streets
+      Given the grid
+          | 10 |   |    |   | 11 |
+          |    | 1 |    | 2 |    |
       And the places
           | osm | class   | type         | name         | geometry |
       And the places
           | osm | class   | type         | name         | geometry |
-          | W2  | highway | unclassified | Cloud Street | :w-south |
+          | W2  | highway | unclassified | Cloud Street | 10,11    |
       And the ways
           | id  | nodes |
       And the ways
           | id  | nodes |
-          | 1   | 1,100,101,102,2 |
+          | 1   | 1,2 |
       And the places
           | osm | class   | type    | addr+interpolation | geometry |
       And the places
           | osm | class   | type    | addr+interpolation | geometry |
-          | W1  | place   | houses  | even    | :w-north |
+          | W1  | place   | houses  | even               | 1,2 |
       When importing
       Then W1 expands to no interpolation
       When updating places
       When importing
       Then W1 expands to no interpolation
       When updating places
-          | osm | class | type  | housenr | geometry |
-          | N1  | place | house | 2       | :n-north-w |
-          | N2  | place | house | 6       | :n-north-e |
-      And updating places
-          | osm | class   | type    | addr+interpolation | street      | geometry |
-          | W1  | place   | houses  | even    | Cloud Street| :w-north |
+          | osm | class | type  | housenr |
+          | N1  | place | house | 2       |
+          | N2  | place | house | 6       |
       Then W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
       Then W1 expands to interpolation
           | parent_place_id | start | end |
           | W2              | 4     | 4   |
@@ -361,3 +391,29 @@ Feature: Update of address interpolations
           | parent_place_id | start | end |
           | W1              | 4     | 6   |
 
           | parent_place_id | start | end |
           | W1              | 4     | 6   |
 
+    Scenario: Legal interpolation type changed to illegal one
+      Given the grid
+          | 1 |  | 2 |
+          | 3 |  | 4 |
+      And the places
+          | osm | class   | type         | name         | geometry |
+          | W1  | highway | unclassified | Cloud Street | 1, 2     |
+      And the ways
+          | id  | nodes |
+          | 2   | 3,4   |
+      And the places
+          | osm | class   | type    | addr+interpolation | geometry |
+          | W2  | place   | houses  | even               | 3,4      |
+      And the places
+          | osm | class | type  | housenr |
+          | N3  | place | house | 2       |
+          | N4  | place | house | 6       |
+      When importing
+      Then W2 expands to interpolation
+          | parent_place_id | start | end |
+          | W1              | 4     | 4   |
+      When updating places
+          | osm | class   | type    | addr+interpolation | geometry |
+          | W2  | place   | houses  | 12-2               | 3,4      |
+      Then W2 expands to no interpolation
+