]> git.openstreetmap.org Git - nominatim.git/commitdiff
add simple tests for address rank computation
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 6 Aug 2020 07:22:38 +0000 (09:22 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 12 Aug 2020 20:22:24 +0000 (22:22 +0200)
test/bdd/db/import/placex.feature
test/bdd/db/import/rank_computation.feature [new file with mode: 0644]

index 531483b316bfce5d29dfa9d4e169175fa0f4c82d..594f3538e5b11f1e0a3d00bf02a207b2fff02446 100644 (file)
@@ -125,73 +125,6 @@ Feature: Import into placex
          | N8     | ca           | 25          | 0 |
          | N9     | ca           | 25          | 0 |
 
-    Scenario: search and address ranks for places are correctly assigned
-        Given the named places
-          | osm  | class     | type      |
-          | N1   | foo       | bar       |
-          | N11  | place     | Continent |
-          | N12  | place     | continent |
-          | N13  | place     | sea       |
-          | N14  | place     | country   |
-          | N15  | place     | state     |
-          | N16  | place     | region    |
-          | N17  | place     | county    |
-          | N18  | place     | city      |
-          | N19  | place     | island    |
-          | N20  | place     | town      |
-          | N21  | place     | village   |
-          | N22  | place     | hamlet    |
-          | N23  | place     | municipality |
-          | N24  | place     | district     |
-          | N26  | place     | borough             |
-          | N27  | place     | suburb              |
-          | N28  | place     | croft               |
-          | N29  | place     | subdivision         |
-          | N30  | place     | isolated_dwelling   |
-          | N31  | place     | farm                |
-          | N32  | place     | locality            |
-          | N33  | place     | islet               |
-          | N34  | place     | mountain_pass       |
-          | N35  | place     | neighbourhood       |
-          | N36  | place     | house               |
-          | N37  | place     | building            |
-          | N38  | place     | houses              |
-        And the named places
-          | osm  | class     | type      | extra+capital |
-          | N101 | place     | city      | yes |
-        When importing
-        Then placex contains
-          | object | rank_search | rank_address |
-          | N1     | 30          | 30 |
-          | N11    | 30          | 30 |
-          | N12    | 2           | 0 |
-          | N13    | 2           | 0 |
-          | N14    | 4           | 0 |
-          | N15    | 8           | 0 |
-          | N16    | 18          | 0 |
-          | N17    | 12          | 12 |
-          | N18    | 16          | 16 |
-          | N19    | 17          | 0 |
-          | N20    | 18          | 16 |
-          | N21    | 19          | 16 |
-          | N22    | 20          | 20 |
-          | N23    | 14          | 14 |
-          | N24    | 19          | 16 |
-          | N26    | 18          | 18 |
-          | N27    | 19          | 20 |
-          | N28    | 20          | 20 |
-          | N29    | 20          | 20 |
-          | N30    | 22          | 20 |
-          | N31    | 20          | 0 |
-          | N32    | 20          | 0 |
-          | N33    | 20          | 0 |
-          | N34    | 20          | 0 |
-          | N101   | 15          | 16 |
-          | N35    | 20          | 22 |
-          | N36    | 30          | 30 |
-          | N37    | 30          | 30 |
-          | N38    | 28          | 0 |
-
     Scenario: search and address ranks for boundaries are correctly assigned
         Given the named places
           | osm | class    | type |
diff --git a/test/bdd/db/import/rank_computation.feature b/test/bdd/db/import/rank_computation.feature
new file mode 100644 (file)
index 0000000..051b1c3
--- /dev/null
@@ -0,0 +1,103 @@
+@DB
+Feature: Rank assignment
+    Tests for assignment of search and address ranks.
+
+    Scenario: Ranks for place nodes are assinged according to thier type
+        Given the named places
+          | osm  | class     | type      |
+          | N1   | foo       | bar       |
+          | N11  | place     | Continent |
+          | N12  | place     | continent |
+          | N13  | place     | sea       |
+          | N14  | place     | country   |
+          | N15  | place     | state     |
+          | N16  | place     | region    |
+          | N17  | place     | county    |
+          | N18  | place     | city      |
+          | N19  | place     | island    |
+          | N36  | place     | house               |
+          | N38  | place     | houses              |
+        And the named places
+          | osm  | class     | type      | extra+capital |
+          | N101 | place     | city      | yes |
+        When importing
+        Then placex contains
+          | object | rank_search | rank_address |
+          | N1     | 30          | 30 |
+          | N11    | 30          | 30 |
+          | N12    | 2           | 0 |
+          | N13    | 2           | 0 |
+          | N14    | 4           | 0 |
+          | N15    | 8           | 0 |
+          | N16    | 18          | 0 |
+          | N17    | 12          | 12 |
+          | N18    | 16          | 16 |
+          | N19    | 17          | 0 |
+          | N101   | 15          | 16 |
+          | N36    | 30          | 30 |
+          | N38    | 28          | 0 |
+
+    Scenario: Ranks for boundaries are assigned according to admin level
+        Given the named places
+          | osm | class    | type           | admin | geometry |
+          | R20 | boundary | administrative | 2     | (1 1, 2 2, 1 2, 1 1) |
+          | R21 | boundary | administrative | 32    | (3 3, 4 4, 3 4, 3 3) |
+          | R22 | boundary | administrative | 6     | (0 0, 1 0, 0 1, 0 0) |
+          | R23 | boundary | administrative | 10    | (0 0, 1 1, 1 0, 0 0) |
+        When importing
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 4           | 4 |
+          | R21    | 30          | 30 |
+          | R22    | 12          | 12 |
+          | R23    | 20          | 20 |
+
+    Scenario: Ranks for 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) |
+          | R21 | boundary | administrative | 32    | suburb      | (3 3, 4 4, 3 4, 3 3) |
+          | R22 | boundary | administrative | 6     | town        | (0 0, 1 0, 0 1, 0 0) |
+          | R23 | boundary | administrative | 10    | village     | (0 0, 1 1, 1 0, 0 0) |
+        When importing
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 6           | 6  |
+          | R21    | 30          | 20 |
+          | R22    | 12          | 16 |
+          | R23    | 20          | 16 |
+
+    Scenario: Place address ranks cannot overtake a parent address rank
+        Given the named places
+          | osm | class    | type           | admin | extra+place  | geometry |
+          | R20 | boundary | administrative | 8     | town         | (0 0, 0 2, 2 2, 2 0, 0 0) |
+          | R21 | boundary | administrative | 9     | municipality | (0 0, 0 1, 1 1, 1 0, 0 0) |
+          | R22 | boundary | administrative | 9     | suburb       | (0 0, 0 1, 1 1, 1 0, 0 0) |
+        When importing
+        Then place_addressline contains
+            | object | address | cached_rank_address |
+            | R21    | R20     | 16                  |
+            | R22    | R20     | 16                  |
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 16          | 16 |
+          | R21    | 18          | 18 |
+          | R22    | 18          | 20 |
+
+    Scenario: Admin levels cannot overtake each other due to place address ranks
+        Given the named places
+          | osm | class    | type           | admin | extra+place  | geometry |
+          | R20 | boundary | administrative | 6     | town         | (0 0, 0 2, 2 2, 2 0, 0 0) |
+          | 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 place_addressline contains
+            | object | address | cached_rank_address |
+            | R21    | R20     | 16                  |
+            | R22    | R20     | 16                  |
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 12          | 16 |
+          | R21    | 16          | 18 |
+          | R22    | 16          | 20 |
+