]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/query/normalization.feature
Merge pull request #2588 from lonvia/housenumber-sanitizer
[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 places
142           | osm | class    | type        | name     | geometry |
143           | R1  | natural  | meadow      | landuse1 | (0 0, 1 0, 1 1, 0 1, 0 0) |
144           | R2  | landuse  | industrial  | landuse2 | (0 0, -1 0, -1 -1, 0 -1, 0 0) |
145         When importing
146         When sending search query "landuse1"
147         Then results contain
148          | ID | osm |
149          | 0  | R1 |
150         When sending search query "landuse2"
151         Then results contain
152          | ID | osm |
153          | 0  | R2 |
154
155     Scenario: Postcode boundaries without ref
156         Given the places
157           | osm | class    | type        | postcode | geometry |
158           | R1  | boundary | postal_code | 12345    | (0 0, 1 0, 1 1, 0 1, 0 0) |
159         When importing
160         When sending search query "12345"
161         Then results contain
162          | ID | osm |
163          | 0  | R1 |
164
165     Scenario: Unprintable characters in postcodes are ignored
166         Given the named places
167             | osm  | class   | type   | address |
168             | N234 | amenity | prison | 'postcode' : u'1234\u200e' |
169         When importing
170         And sending search query "1234"
171         Then result 0 has not attributes osm_type
172
173     Scenario Outline: Housenumbers with special characters are found
174         Given the grid
175             | 1 |  |   |  | 2 |
176             |   |  | 9 |  |   |
177         And the places
178             | osm | class   | type    | name    | geometry |
179             | W1  | highway | primary | Main St | 1,2      |
180         And the places
181             | osm | class    | type | housenr | geometry |
182             | N1  | building | yes  | <nr>    | 9        |
183         When importing
184         And sending search query "Main St <nr>"
185         Then results contain
186          | osm | display_name |
187          | N1  | <nr>, Main St |
188
189     Examples:
190         | nr |
191         | 1  |
192         | 3456 |
193         | 1 a |
194         | 56b |
195         | 1 A |
196         | 2號 |
197         | 1Б  |
198         | 1 к1 |
199         | 23-123 |
200
201     Scenario Outline: Housenumbers in lists are found
202         Given the grid
203             | 1 |  |   |  | 2 |
204             |   |  | 9 |  |   |
205         And the places
206             | osm | class   | type    | name    | geometry |
207             | W1  | highway | primary | Main St | 1,2      |
208         And the places
209             | osm | class    | type | housenr   | geometry |
210             | N1  | building | yes  | <nr-list> | 9        |
211         When importing
212         And sending search query "Main St <nr>"
213         Then results contain
214          | osm | display_name |
215          | N1  | <nr-list>, Main St |
216
217     Examples:
218         | nr-list    | nr |
219         | 1,2,3      | 1  |
220         | 1,2,3      | 2  |
221         | 1, 2, 3    | 3  |
222         | 45 ;67;3   | 45 |
223         | 45 ;67;3   | 67 |
224         | 1a;1k      | 1a |
225         | 1a;1k      | 1k |
226         | 34/678     | 34 |
227         | 34/678     | 678 |
228         | 34/678     | 34/678 |