]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/import/rank_computation.feature
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / test / bdd / db / import / rank_computation.feature
index 051b1c310f67f603659e325b19d4faa6656056d5..cea4d973acbf16625a99b4f3a7e205778b1ad96e 100644 (file)
@@ -2,7 +2,7 @@
 Feature: Rank assignment
     Tests for assignment of search and address ranks.
 
 Feature: Rank assignment
     Tests for assignment of search and address ranks.
 
-    Scenario: Ranks for place nodes are assinged according to thier type
+    Scenario: Ranks for place nodes are assigned according to their type
         Given the named places
           | osm  | class     | type      |
           | N1   | foo       | bar       |
         Given the named places
           | osm  | class     | type      |
           | N1   | foo       | bar       |
@@ -24,7 +24,7 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | N1     | 30          | 30 |
         Then placex contains
           | object | rank_search | rank_address |
           | N1     | 30          | 30 |
-          | N11    | 30          | 30 |
+          | N11    | 22          | 0 |
           | N12    | 2           | 0 |
           | N13    | 2           | 0 |
           | N14    | 4           | 0 |
           | N12    | 2           | 0 |
           | N13    | 2           | 0 |
           | N14    | 4           | 0 |
@@ -48,11 +48,11 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 4           | 4 |
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 4           | 4 |
-          | R21    | 30          | 30 |
+          | R21    | 25          | 0 |
           | R22    | 12          | 12 |
           | R23    | 20          | 20 |
 
           | R22    | 12          | 12 |
           | R23    | 20          | 20 |
 
-    Scenario: Ranks for boundaries with place assignment go with place address ranks if available
+    Scenario: Ranks for addressable boundaries with place assignment go with place address ranks if available
         Given the named places
           | osm | class    | type           | admin | extra+place | geometry |
           | R20 | boundary | administrative | 3     | state       | (1 1, 2 2, 1 2, 1 1) |
         Given the named places
           | osm | class    | type           | admin | extra+place | geometry |
           | R20 | boundary | administrative | 3     | state       | (1 1, 2 2, 1 2, 1 1) |
@@ -63,7 +63,7 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 6           | 6  |
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 6           | 6  |
-          | R21    | 30          | 20 |
+          | R21    | 25          | 0  |
           | R22    | 12          | 16 |
           | R23    | 20          | 16 |
 
           | R22    | 12          | 16 |
           | R23    | 20          | 16 |
 
@@ -91,13 +91,58 @@ Feature: Rank assignment
           | R21 | boundary | administrative | 8     |              | (0 0, 0 1, 1 1, 1 0, 0 0) |
           | R22 | boundary | administrative | 8     | suburb       | (0 0, 0 1, 1 1, 1 0, 0 0) |
         When importing
           | R21 | boundary | administrative | 8     |              | (0 0, 0 1, 1 1, 1 0, 0 0) |
           | R22 | boundary | administrative | 8     | suburb       | (0 0, 0 1, 1 1, 1 0, 0 0) |
         When importing
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 12          | 16 |
+          | R21    | 16          | 18 |
+          | R22    | 16          | 20 |
         Then place_addressline contains
             | object | address | cached_rank_address |
             | R21    | R20     | 16                  |
             | R22    | R20     | 16                  |
         Then place_addressline contains
             | object | address | cached_rank_address |
             | R21    | R20     | 16                  |
             | R22    | R20     | 16                  |
+
+    Scenario: Admin levels must not be larger than 25
+        Given the named places
+          | osm | class    | type           | admin | extra+place   | geometry |
+          | R20 | boundary | administrative | 6     | neighbourhood | (0 0, 0 2, 2 2, 2 0, 0 0) |
+          | R21 | boundary | administrative | 7     |               | (0 0, 0 1, 1 1, 1 0, 0 0) |
+          | R22 | boundary | administrative | 8     |               | (0 0, 0 0.5, 0.5 0.5, 0.5 0, 0 0) |
+        When importing
         Then placex contains
           | object | rank_search | rank_address |
         Then placex contains
           | object | rank_search | rank_address |
-          | R20    | 12          | 16 |
-          | R21    | 16          | 18 |
-          | R22    | 16          | 20 |
+          | R20    | 12          | 22 |
+          | R21    | 14          | 24 |
+          | R22    | 16          | 25 |
 
 
+    Scenario: admin levels contained in a place area must not overtake address ranks
+        Given the named places
+            | osm | class    | type           | admin | geometry |
+            | R10 | place    | city           | 15    | (0 0, 0 2, 2 0, 0 0) |
+            | R20 | boundary | administrative | 6     | (0 0, 0 1, 1 0, 0 0) |
+        When importing
+        Then placex contains
+            | object | rank_search | rank_address |
+            | R10    | 16          | 16           |
+            | R20    | 12          | 18           |
+
+    Scenario: admin levels overlapping a place area are not demoted
+        Given the named places
+            | osm | class    | type           | admin | geometry |
+            | R10 | place    | city           | 15    | (0 0, 0 2, 2 0, 0 0) |
+            | R20 | boundary | administrative | 6     | (-1 0, 0 1, 1 0, -1 0) |
+        When importing
+        Then placex contains
+            | object | rank_search | rank_address |
+            | R10    | 16          | 16           |
+            | R20    | 12          | 12           |
+
+    Scenario: admin levels with equal area as a place area are not demoted
+        Given the named places
+            | osm | class    | type           | admin | geometry |
+            | R10 | place    | city           | 15    | (0 0, 0 2, 2 0, 0 0) |
+            | R20 | boundary | administrative | 6     | (0 0, 0 2, 2 0, 0 0) |
+        When importing
+        Then placex contains
+            | object | rank_search | rank_address |
+            | R10    | 16          | 16           |
+            | R20    | 12          | 12           |