]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/db/query/normalization.feature
bdd: extend reverse API tests for format checks
[nominatim.git] / test / bdd / db / query / normalization.feature
index 71c69dec4acd463751b6ea3e4b7d6b3632975e11..e5a7a5922b7f18db1abc4fb7a497b01348747938 100644 (file)
@@ -3,6 +3,31 @@ Feature: Import and search of names
     Tests all naming related issues: normalisation,
     abbreviations, internationalisation, etc.
 
+    Scenario: non-latin scripts can be found
+        Given the places
+          | osm | class | type      | name |
+          | N1  | place | locality  | Речицкий район |
+          | N2  | place | locality  | Refugio de montaña |
+          | N3  | place | locality  | 高槻市|
+          | N4  | place | locality  | الدوحة |
+        When importing
+        When sending search query "Речицкий район"
+        Then results contain
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Refugio de montaña"
+        Then results contain
+         | ID | osm |
+         | 0  | N2 |
+        When sending search query "高槻市"
+        Then results contain
+         | ID | osm |
+         | 0  | N3 |
+        When sending search query "الدوحة"
+        Then results contain
+         | ID | osm |
+         | 0  | N4 |
+
     Scenario: Case-insensitivity of search
         Given the places
           | osm | class | type      | name |
@@ -11,129 +36,191 @@ Feature: Import and search of names
         Then placex contains
           | object | class  | type     | name+name |
           | N1     | place  | locality | FooBar |
-        When searching for "FooBar"
+        When sending search query "FooBar"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "foobar"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "foobar"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "fOObar"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "fOObar"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "FOOBAR"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "FOOBAR"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
+         | ID | osm |
+         | 0  | N1 |
 
     Scenario: Multiple spaces in name
         Given the places
           | osm | class | type      | name |
           | N1  | place | locality  | one two  three |
         When importing
-        When searching for "one two three"
+        When sending search query "one two three"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "one   two three"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "one   two three"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "one two  three"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "one two  three"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "    one two three"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "    one two three"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
+         | ID | osm |
+         | 0  | N1 |
 
     Scenario: Special characters in name
         Given the places
-          | osm | class | type      | name |
-          | N1  | place | locality  | Jim-Knopf-Str |
+          | osm | class | type      | name+name:de |
+          | N1  | place | locality  | Jim-Knopf-Straße |
           | N2  | place | locality  | Smith/Weston |
           | N3  | place | locality  | space mountain |
           | N4  | place | locality  | space |
           | N5  | place | locality  | mountain |
         When importing
-        When searching for "Jim-Knopf-Str"
+        When sending search query "Jim-Knopf-Str"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "Jim Knopf-Str"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Jim Knopf-Str"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "Jim Knopf Str"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Jim Knopf Str"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "Jim/Knopf-Str"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Jim/Knopf-Str"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "Jim-Knopfstr"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Jim-Knopfstr"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 1 |
-        When searching for "Smith/Weston"
+         | ID | osm |
+         | 0  | N1 |
+        When sending search query "Smith/Weston"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 2 |
-        When searching for "Smith Weston"
+         | ID | osm |
+         | 0  | N2 |
+        When sending search query "Smith Weston"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 2 |
-        When searching for "Smith-Weston"
+         | ID | osm |
+         | 0  | N2 |
+        When sending search query "Smith-Weston"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 2 |
-        When searching for "space mountain"
+         | ID | osm |
+         | 0  | N2 |
+        When sending search query "space mountain"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 3 |
-        When searching for "space-mountain"
+         | ID | osm |
+         | 0  | N3 |
+        When sending search query "space-mountain"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 3 |
-        When searching for "space/mountain"
+         | ID | osm |
+         | 0  | N3 |
+        When sending search query "space/mountain"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 3 |
-        When searching for "space\mountain"
+         | ID | osm |
+         | 0  | N3 |
+        When sending search query "space\mountain"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 3 |
-        When searching for "space(mountain)"
+         | ID | osm |
+         | 0  | N3 |
+        When sending search query "space(mountain)"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | N        | 3 |
+         | ID | osm |
+         | 0  | N3 |
 
     Scenario: Landuse with name are found
+        Given the grid
+          | 1 | 2 |
+          | 3 |   |
         Given the places
           | osm | class    | type        | name     | geometry |
-          | R1  | natural  | meadow      | landuse1 | (0 0, 1 0, 1 1, 0 1, 0 0) |
-          | R2  | landuse  | industrial  | landuse2 | (0 0, -1 0, -1 -1, 0 -1, 0 0) |
+          | R1  | natural  | meadow      | landuse1 | (1,2,3,1) |
+          | R2  | landuse  | industrial  | landuse2 | (2,3,1,2) |
         When importing
-        When searching for "landuse1"
+        When sending search query "landuse1"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | R        | 1 |
-        When searching for "landuse2"
+         | ID | osm |
+         | 0  | R1 |
+        When sending search query "landuse2"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | R        | 2 |
+         | ID | osm |
+         | 0  | R2 |
 
-    @wip
     Scenario: Postcode boundaries without ref
+        Given the grid with origin FR
+          |   | 2 |   |
+          | 1 |   | 3 |
         Given the places
           | osm | class    | type        | postcode | geometry |
-          | R1  | boundary | postal_code | 12345    | (0 0, 1 0, 1 1, 0 1, 0 0) |
+          | R1  | boundary | postal_code | 12345    | (1,2,3,1) |
         When importing
-        When searching for "12345"
+        When sending search query "12345"
         Then results contain
-         | ID | osm_type | osm_id |
-         | 0  | R        | 1 |
+         | ID | osm |
+         | 0  | R1 |
+
+    Scenario Outline: Housenumbers with special characters are found
+        Given the grid
+            | 1 |  |   |  | 2 |
+            |   |  | 9 |  |   |
+        And the places
+            | osm | class   | type    | name    | geometry |
+            | W1  | highway | primary | Main St | 1,2      |
+        And the places
+            | osm | class    | type | housenr | geometry |
+            | N1  | building | yes  | <nr>    | 9        |
+        When importing
+        And sending search query "Main St <nr>"
+        Then results contain
+         | osm | display_name |
+         | N1  | <nr>, Main St |
+
+    Examples:
+        | nr |
+        | 1  |
+        | 3456 |
+        | 1 a |
+        | 56b |
+        | 1 A |
+        | 2號 |
+        | 1Б  |
+        | 1 к1 |
+        | 23-123 |
+
+    Scenario Outline: Housenumbers in lists are found
+        Given the grid
+            | 1 |  |   |  | 2 |
+            |   |  | 9 |  |   |
+        And the places
+            | osm | class   | type    | name    | geometry |
+            | W1  | highway | primary | Main St | 1,2      |
+        And the places
+            | osm | class    | type | housenr   | geometry |
+            | N1  | building | yes  | <nr-list> | 9        |
+        When importing
+        And sending search query "Main St <nr>"
+        Then results contain
+         | osm | display_name |
+         | N1  | <nr-list>, Main St |
+
+    Examples:
+        | nr-list    | nr |
+        | 1,2,3      | 1  |
+        | 1,2,3      | 2  |
+        | 1, 2, 3    | 3  |
+        | 45 ;67;3   | 45 |
+        | 45 ;67;3   | 67 |
+        | 1a;1k      | 1a |
+        | 1a;1k      | 1k |
+        | 34/678     | 34 |
+        | 34/678     | 678 |
+        | 34/678     | 34/678 |