]> git.openstreetmap.org Git - nominatim.git/blob - test/bdd/db/query/normalization.feature
use a frozen DB for API tests
[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: Case-insensitivity of search
7         Given the places
8           | osm | class | type      | name |
9           | N1  | place | locality  | FooBar |
10         When importing
11         Then placex contains
12           | object | class  | type     | name+name |
13           | N1     | place  | locality | FooBar |
14         When searching for "FooBar"
15         Then results contain
16          | ID | osm_type | osm_id |
17          | 0  | N        | 1 |
18         When searching for "foobar"
19         Then results contain
20          | ID | osm_type | osm_id |
21          | 0  | N        | 1 |
22         When searching for "fOObar"
23         Then results contain
24          | ID | osm_type | osm_id |
25          | 0  | N        | 1 |
26         When searching for "FOOBAR"
27         Then results contain
28          | ID | osm_type | osm_id |
29          | 0  | N        | 1 |
30
31     Scenario: Multiple spaces in name
32         Given the places
33           | osm | class | type      | name |
34           | N1  | place | locality  | one two  three |
35         When importing
36         When searching for "one two three"
37         Then results contain
38          | ID | osm_type | osm_id |
39          | 0  | N        | 1 |
40         When searching for "one   two three"
41         Then results contain
42          | ID | osm_type | osm_id |
43          | 0  | N        | 1 |
44         When searching for "one two  three"
45         Then results contain
46          | ID | osm_type | osm_id |
47          | 0  | N        | 1 |
48         When searching for "    one two three"
49         Then results contain
50          | ID | osm_type | osm_id |
51          | 0  | N        | 1 |
52
53     Scenario: Special characters in name
54         Given the places
55           | osm | class | type      | name |
56           | N1  | place | locality  | Jim-Knopf-Str |
57           | N2  | place | locality  | Smith/Weston |
58           | N3  | place | locality  | space mountain |
59           | N4  | place | locality  | space |
60           | N5  | place | locality  | mountain |
61         When importing
62         When searching for "Jim-Knopf-Str"
63         Then results contain
64          | ID | osm_type | osm_id |
65          | 0  | N        | 1 |
66         When searching for "Jim Knopf-Str"
67         Then results contain
68          | ID | osm_type | osm_id |
69          | 0  | N        | 1 |
70         When searching for "Jim Knopf Str"
71         Then results contain
72          | ID | osm_type | osm_id |
73          | 0  | N        | 1 |
74         When searching for "Jim/Knopf-Str"
75         Then results contain
76          | ID | osm_type | osm_id |
77          | 0  | N        | 1 |
78         When searching for "Jim-Knopfstr"
79         Then results contain
80          | ID | osm_type | osm_id |
81          | 0  | N        | 1 |
82         When searching for "Smith/Weston"
83         Then results contain
84          | ID | osm_type | osm_id |
85          | 0  | N        | 2 |
86         When searching for "Smith Weston"
87         Then results contain
88          | ID | osm_type | osm_id |
89          | 0  | N        | 2 |
90         When searching for "Smith-Weston"
91         Then results contain
92          | ID | osm_type | osm_id |
93          | 0  | N        | 2 |
94         When searching for "space mountain"
95         Then results contain
96          | ID | osm_type | osm_id |
97          | 0  | N        | 3 |
98         When searching for "space-mountain"
99         Then results contain
100          | ID | osm_type | osm_id |
101          | 0  | N        | 3 |
102         When searching for "space/mountain"
103         Then results contain
104          | ID | osm_type | osm_id |
105          | 0  | N        | 3 |
106         When searching for "space\mountain"
107         Then results contain
108          | ID | osm_type | osm_id |
109          | 0  | N        | 3 |
110         When searching for "space(mountain)"
111         Then results contain
112          | ID | osm_type | osm_id |
113          | 0  | N        | 3 |
114
115     Scenario: Landuse with name are found
116         Given the places
117           | osm | class    | type        | name     | geometry |
118           | R1  | natural  | meadow      | landuse1 | (0 0, 1 0, 1 1, 0 1, 0 0) |
119           | R2  | landuse  | industrial  | landuse2 | (0 0, -1 0, -1 -1, 0 -1, 0 0) |
120         When importing
121         When searching for "landuse1"
122         Then results contain
123          | ID | osm_type | osm_id |
124          | 0  | R        | 1 |
125         When searching for "landuse2"
126         Then results contain
127          | ID | osm_type | osm_id |
128          | 0  | R        | 2 |
129
130     Scenario: Postcode boundaries without ref
131         Given the places
132           | osm | class    | type        | postcode | geometry |
133           | R1  | boundary | postal_code | 12345    | (0 0, 1 0, 1 1, 0 1, 0 0) |
134         When importing
135         When searching for "12345"
136         Then results contain
137          | ID | osm_type | osm_id |
138          | 0  | R        | 1 |
139
140      Scenario: Unprintable characters in postcodes are ignored
141         Given the named places
142             | osm  | class   | type   | address |
143             | N234 | amenity | prison | 'postcode' : u'1234\u200e' |
144         When importing
145         And searching for "1234"
146         Then results contain
147          | ID | osm_type |
148          | 0  | P        |