]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/query/normalization.feature
bdd: extend reverse API tests for format checks
[nominatim.git] / test / bdd / db / query / normalization.feature
1 @DB
2 Feature: Import and search of names
3     Tests all naming related issues: normalisation,
4     abbreviations, internationalisation, etc.
5
6     Scenario: non-latin scripts can be found
7         Given the places
8           | osm | class | type      | name |
9           | N1  | place | locality  | Речицкий район |
10           | N2  | place | locality  | Refugio de montaña |
11           | N3  | place | locality  | 高槻市|
12           | N4  | place | locality  | الدوحة |
13         When importing
14         When sending search query "Речицкий район"
15         Then results contain
16          | ID | osm |
17          | 0  | N1 |
18         When sending search query "Refugio de montaña"
19         Then results contain
20          | ID | osm |
21          | 0  | N2 |
22         When sending search query "高槻市"
23         Then results contain
24          | ID | osm |
25          | 0  | N3 |
26         When sending search query "الدوحة"
27         Then results contain
28          | ID | osm |
29          | 0  | N4 |
30
31     Scenario: Case-insensitivity of search
32         Given the places
33           | osm | class | type      | name |
34           | N1  | place | locality  | FooBar |
35         When importing
36         Then placex contains
37           | object | class  | type     | name+name |
38           | N1     | place  | locality | FooBar |
39         When sending search query "FooBar"
40         Then results contain
41          | ID | osm |
42          | 0  | N1 |
43         When sending search query "foobar"
44         Then results contain
45          | ID | osm |
46          | 0  | N1 |
47         When sending search query "fOObar"
48         Then results contain
49          | ID | osm |
50          | 0  | N1 |
51         When sending search query "FOOBAR"
52         Then results contain
53          | ID | osm |
54          | 0  | N1 |
55
56     Scenario: Multiple spaces in name
57         Given the places
58           | osm | class | type      | name |
59           | N1  | place | locality  | one two  three |
60         When importing
61         When sending search query "one two three"
62         Then results contain
63          | ID | osm |
64          | 0  | N1 |
65         When sending search query "one   two three"
66         Then results contain
67          | ID | osm |
68          | 0  | N1 |
69         When sending search query "one two  three"
70         Then results contain
71          | ID | osm |
72          | 0  | N1 |
73         When sending search query "    one two three"
74         Then results contain
75          | ID | osm |
76          | 0  | N1 |
77
78     Scenario: Special characters in name
79         Given the places
80           | osm | class | type      | name+name:de |
81           | N1  | place | locality  | Jim-Knopf-Straße |
82           | N2  | place | locality  | Smith/Weston |
83           | N3  | place | locality  | space mountain |
84           | N4  | place | locality  | space |
85           | N5  | place | locality  | mountain |
86         When importing
87         When sending search query "Jim-Knopf-Str"
88         Then results contain
89          | ID | osm |
90          | 0  | N1 |
91         When sending search query "Jim Knopf-Str"
92         Then results contain
93          | ID | osm |
94          | 0  | N1 |
95         When sending search query "Jim Knopf Str"
96         Then results contain
97          | ID | osm |
98          | 0  | N1 |
99         When sending search query "Jim/Knopf-Str"
100         Then results contain
101          | ID | osm |
102          | 0  | N1 |
103         When sending search query "Jim-Knopfstr"
104         Then results contain
105          | ID | osm |
106          | 0  | N1 |
107         When sending search query "Smith/Weston"
108         Then results contain
109          | ID | osm |
110          | 0  | N2 |
111         When sending search query "Smith Weston"
112         Then results contain
113          | ID | osm |
114          | 0  | N2 |
115         When sending search query "Smith-Weston"
116         Then results contain
117          | ID | osm |
118          | 0  | N2 |
119         When sending search query "space mountain"
120         Then results contain
121          | ID | osm |
122          | 0  | N3 |
123         When sending search query "space-mountain"
124         Then results contain
125          | ID | osm |
126          | 0  | N3 |
127         When sending search query "space/mountain"
128         Then results contain
129          | ID | osm |
130          | 0  | N3 |
131         When sending search query "space\mountain"
132         Then results contain
133          | ID | osm |
134          | 0  | N3 |
135         When sending search query "space(mountain)"
136         Then results contain
137          | ID | osm |
138          | 0  | N3 |
139
140     Scenario: Landuse with name are found
141         Given the grid
142           | 1 | 2 |
143           | 3 |   |
144         Given the places
145           | osm | class    | type        | name     | geometry |
146           | R1  | natural  | meadow      | landuse1 | (1,2,3,1) |
147           | R2  | landuse  | industrial  | landuse2 | (2,3,1,2) |
148         When importing
149         When sending search query "landuse1"
150         Then results contain
151          | ID | osm |
152          | 0  | R1 |
153         When sending search query "landuse2"
154         Then results contain
155          | ID | osm |
156          | 0  | R2 |
157
158     Scenario: Postcode boundaries without ref
159         Given the grid with origin FR
160           |   | 2 |   |
161           | 1 |   | 3 |
162         Given the places
163           | osm | class    | type        | postcode | geometry |
164           | R1  | boundary | postal_code | 12345    | (1,2,3,1) |
165         When importing
166         When sending search query "12345"
167         Then results contain
168          | ID | osm |
169          | 0  | R1 |
170
171     Scenario Outline: Housenumbers with special characters are found
172         Given the grid
173             | 1 |  |   |  | 2 |
174             |   |  | 9 |  |   |
175         And the places
176             | osm | class   | type    | name    | geometry |
177             | W1  | highway | primary | Main St | 1,2      |
178         And the places
179             | osm | class    | type | housenr | geometry |
180             | N1  | building | yes  | <nr>    | 9        |
181         When importing
182         And sending search query "Main St <nr>"
183         Then results contain
184          | osm | display_name |
185          | N1  | <nr>, Main St |
186
187     Examples:
188         | nr |
189         | 1  |
190         | 3456 |
191         | 1 a |
192         | 56b |
193         | 1 A |
194         | 2號 |
195         | 1Б  |
196         | 1 к1 |
197         | 23-123 |
198
199     Scenario Outline: Housenumbers in lists are found
200         Given the grid
201             | 1 |  |   |  | 2 |
202             |   |  | 9 |  |   |
203         And the places
204             | osm | class   | type    | name    | geometry |
205             | W1  | highway | primary | Main St | 1,2      |
206         And the places
207             | osm | class    | type | housenr   | geometry |
208             | N1  | building | yes  | <nr-list> | 9        |
209         When importing
210         And sending search query "Main St <nr>"
211         Then results contain
212          | osm | display_name |
213          | N1  | <nr-list>, Main St |
214
215     Examples:
216         | nr-list    | nr |
217         | 1,2,3      | 1  |
218         | 1,2,3      | 2  |
219         | 1, 2, 3    | 3  |
220         | 45 ;67;3   | 45 |
221         | 45 ;67;3   | 67 |
222         | 1a;1k      | 1a |
223         | 1a;1k      | 1k |
224         | 34/678     | 34 |
225         | 34/678     | 678 |
226         | 34/678     | 34/678 |