1--TEST--
2locale_filter_matches.phpt() for ICU >= 70.1
3--SKIPIF--
4<?php
5if( !extension_loaded( 'intl' ) ) die('skip');
6if (version_compare(INTL_ICU_VERSION, '70.1') < 0) die('skip for ICU >= 70.1');
7?>
8--FILE--
9<?php
10
11/*
12 * Try parsing different Locales
13 * with Procedural and Object methods.
14 */
15
16function ut_main()
17{
18    $loc_ranges = array(
19        'de-de',
20        'sl_IT',
21        'sl_IT_Nedis',
22        'jbo',
23        'art-lojban',
24        'sl_IT'
25    );
26
27    $lang_tags = array(
28        'de-DEVA',
29        'de-DE-1996',
30        'de-DE',
31        'zh_Hans',
32        'de-CH-1996',
33        'sl_IT',
34        'sl_IT_nedis-a-kirti-x-xyz',
35        'sl_IT_rozaj',
36        'sl_IT_NEDIS_ROJAZ_1901',
37        'i-enochian',
38        'sgn-CH-de',
39        'art-lojban',
40        'i-lux',
41        'art-lojban',
42        'jbo',
43        'en_sl_IT'
44    );
45
46    $res_str = '';
47    $isCanonical = false;
48    foreach($loc_ranges as $loc_range){
49        foreach($lang_tags as $lang_tag){
50            $res_str .="--------------\n";
51            $result= ut_loc_locale_filter_matches( $lang_tag , $loc_range , $isCanonical);
52            $res_str .= "loc_range:$loc_range matches lang_tag $lang_tag ? ";
53            if( $result){
54                $res_str .= "YES\n";
55            }else{
56                $res_str .= "NO\n";
57            }
58//canonicalized version
59            $result= ut_loc_locale_filter_matches( $lang_tag , $loc_range , !($isCanonical));
60            $can_loc_range = ut_loc_canonicalize($loc_range);
61            $can_lang_tag = ut_loc_canonicalize($lang_tag);
62            $res_str .= "loc_range:$can_loc_range canonically matches lang_tag $can_lang_tag ? ";
63            if( $result){
64                $res_str .= "YES\n";
65            }else{
66                $res_str .= "NO\n";
67            }
68        }
69    }
70
71    $res_str .= "\n";
72    return $res_str;
73
74}
75
76include_once( 'ut_common.inc' );
77ut_run();
78
79?>
80--EXPECT--
81--------------
82loc_range:de-de matches lang_tag de-DEVA ? NO
83loc_range:de_DE canonically matches lang_tag de_Deva ? NO
84--------------
85loc_range:de-de matches lang_tag de-DE-1996 ? YES
86loc_range:de_DE canonically matches lang_tag de_DE_1996 ? YES
87--------------
88loc_range:de-de matches lang_tag de-DE ? YES
89loc_range:de_DE canonically matches lang_tag de_DE ? YES
90--------------
91loc_range:de-de matches lang_tag zh_Hans ? NO
92loc_range:de_DE canonically matches lang_tag zh_Hans ? NO
93--------------
94loc_range:de-de matches lang_tag de-CH-1996 ? NO
95loc_range:de_DE canonically matches lang_tag de_CH_1996 ? NO
96--------------
97loc_range:de-de matches lang_tag sl_IT ? NO
98loc_range:de_DE canonically matches lang_tag sl_IT ? NO
99--------------
100loc_range:de-de matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO
101loc_range:de_DE canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? NO
102--------------
103loc_range:de-de matches lang_tag sl_IT_rozaj ? NO
104loc_range:de_DE canonically matches lang_tag sl_IT_ROZAJ ? NO
105--------------
106loc_range:de-de matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
107loc_range:de_DE canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
108--------------
109loc_range:de-de matches lang_tag i-enochian ? NO
110loc_range:de_DE canonically matches lang_tag @x=i-enochian ? NO
111--------------
112loc_range:de-de matches lang_tag sgn-CH-de ? NO
113loc_range:de_DE canonically matches lang_tag sgn_CH_DE ? NO
114--------------
115loc_range:de-de matches lang_tag art-lojban ? NO
116loc_range:de_DE canonically matches lang_tag jbo ? NO
117--------------
118loc_range:de-de matches lang_tag i-lux ? NO
119loc_range:de_DE canonically matches lang_tag lb ? NO
120--------------
121loc_range:de-de matches lang_tag art-lojban ? NO
122loc_range:de_DE canonically matches lang_tag jbo ? NO
123--------------
124loc_range:de-de matches lang_tag jbo ? NO
125loc_range:de_DE canonically matches lang_tag jbo ? NO
126--------------
127loc_range:de-de matches lang_tag en_sl_IT ? NO
128loc_range:de_DE canonically matches lang_tag en_SL_IT ? NO
129--------------
130loc_range:sl_IT matches lang_tag de-DEVA ? NO
131loc_range:sl_IT canonically matches lang_tag de_Deva ? NO
132--------------
133loc_range:sl_IT matches lang_tag de-DE-1996 ? NO
134loc_range:sl_IT canonically matches lang_tag de_DE_1996 ? NO
135--------------
136loc_range:sl_IT matches lang_tag de-DE ? NO
137loc_range:sl_IT canonically matches lang_tag de_DE ? NO
138--------------
139loc_range:sl_IT matches lang_tag zh_Hans ? NO
140loc_range:sl_IT canonically matches lang_tag zh_Hans ? NO
141--------------
142loc_range:sl_IT matches lang_tag de-CH-1996 ? NO
143loc_range:sl_IT canonically matches lang_tag de_CH_1996 ? NO
144--------------
145loc_range:sl_IT matches lang_tag sl_IT ? YES
146loc_range:sl_IT canonically matches lang_tag sl_IT ? YES
147--------------
148loc_range:sl_IT matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES
149loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? YES
150--------------
151loc_range:sl_IT matches lang_tag sl_IT_rozaj ? YES
152loc_range:sl_IT canonically matches lang_tag sl_IT_ROZAJ ? YES
153--------------
154loc_range:sl_IT matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
155loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
156--------------
157loc_range:sl_IT matches lang_tag i-enochian ? NO
158loc_range:sl_IT canonically matches lang_tag @x=i-enochian ? NO
159--------------
160loc_range:sl_IT matches lang_tag sgn-CH-de ? NO
161loc_range:sl_IT canonically matches lang_tag sgn_CH_DE ? NO
162--------------
163loc_range:sl_IT matches lang_tag art-lojban ? NO
164loc_range:sl_IT canonically matches lang_tag jbo ? NO
165--------------
166loc_range:sl_IT matches lang_tag i-lux ? NO
167loc_range:sl_IT canonically matches lang_tag lb ? NO
168--------------
169loc_range:sl_IT matches lang_tag art-lojban ? NO
170loc_range:sl_IT canonically matches lang_tag jbo ? NO
171--------------
172loc_range:sl_IT matches lang_tag jbo ? NO
173loc_range:sl_IT canonically matches lang_tag jbo ? NO
174--------------
175loc_range:sl_IT matches lang_tag en_sl_IT ? NO
176loc_range:sl_IT canonically matches lang_tag en_SL_IT ? NO
177--------------
178loc_range:sl_IT_Nedis matches lang_tag de-DEVA ? NO
179loc_range:sl_IT_NEDIS canonically matches lang_tag de_Deva ? NO
180--------------
181loc_range:sl_IT_Nedis matches lang_tag de-DE-1996 ? NO
182loc_range:sl_IT_NEDIS canonically matches lang_tag de_DE_1996 ? NO
183--------------
184loc_range:sl_IT_Nedis matches lang_tag de-DE ? NO
185loc_range:sl_IT_NEDIS canonically matches lang_tag de_DE ? NO
186--------------
187loc_range:sl_IT_Nedis matches lang_tag zh_Hans ? NO
188loc_range:sl_IT_NEDIS canonically matches lang_tag zh_Hans ? NO
189--------------
190loc_range:sl_IT_Nedis matches lang_tag de-CH-1996 ? NO
191loc_range:sl_IT_NEDIS canonically matches lang_tag de_CH_1996 ? NO
192--------------
193loc_range:sl_IT_Nedis matches lang_tag sl_IT ? NO
194loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT ? NO
195--------------
196loc_range:sl_IT_Nedis matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES
197loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? YES
198--------------
199loc_range:sl_IT_Nedis matches lang_tag sl_IT_rozaj ? NO
200loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_ROZAJ ? NO
201--------------
202loc_range:sl_IT_Nedis matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
203loc_range:sl_IT_NEDIS canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
204--------------
205loc_range:sl_IT_Nedis matches lang_tag i-enochian ? NO
206loc_range:sl_IT_NEDIS canonically matches lang_tag @x=i-enochian ? NO
207--------------
208loc_range:sl_IT_Nedis matches lang_tag sgn-CH-de ? NO
209loc_range:sl_IT_NEDIS canonically matches lang_tag sgn_CH_DE ? NO
210--------------
211loc_range:sl_IT_Nedis matches lang_tag art-lojban ? NO
212loc_range:sl_IT_NEDIS canonically matches lang_tag jbo ? NO
213--------------
214loc_range:sl_IT_Nedis matches lang_tag i-lux ? NO
215loc_range:sl_IT_NEDIS canonically matches lang_tag lb ? NO
216--------------
217loc_range:sl_IT_Nedis matches lang_tag art-lojban ? NO
218loc_range:sl_IT_NEDIS canonically matches lang_tag jbo ? NO
219--------------
220loc_range:sl_IT_Nedis matches lang_tag jbo ? NO
221loc_range:sl_IT_NEDIS canonically matches lang_tag jbo ? NO
222--------------
223loc_range:sl_IT_Nedis matches lang_tag en_sl_IT ? NO
224loc_range:sl_IT_NEDIS canonically matches lang_tag en_SL_IT ? NO
225--------------
226loc_range:jbo matches lang_tag de-DEVA ? NO
227loc_range:jbo canonically matches lang_tag de_Deva ? NO
228--------------
229loc_range:jbo matches lang_tag de-DE-1996 ? NO
230loc_range:jbo canonically matches lang_tag de_DE_1996 ? NO
231--------------
232loc_range:jbo matches lang_tag de-DE ? NO
233loc_range:jbo canonically matches lang_tag de_DE ? NO
234--------------
235loc_range:jbo matches lang_tag zh_Hans ? NO
236loc_range:jbo canonically matches lang_tag zh_Hans ? NO
237--------------
238loc_range:jbo matches lang_tag de-CH-1996 ? NO
239loc_range:jbo canonically matches lang_tag de_CH_1996 ? NO
240--------------
241loc_range:jbo matches lang_tag sl_IT ? NO
242loc_range:jbo canonically matches lang_tag sl_IT ? NO
243--------------
244loc_range:jbo matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO
245loc_range:jbo canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? NO
246--------------
247loc_range:jbo matches lang_tag sl_IT_rozaj ? NO
248loc_range:jbo canonically matches lang_tag sl_IT_ROZAJ ? NO
249--------------
250loc_range:jbo matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
251loc_range:jbo canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
252--------------
253loc_range:jbo matches lang_tag i-enochian ? NO
254loc_range:jbo canonically matches lang_tag @x=i-enochian ? NO
255--------------
256loc_range:jbo matches lang_tag sgn-CH-de ? NO
257loc_range:jbo canonically matches lang_tag sgn_CH_DE ? NO
258--------------
259loc_range:jbo matches lang_tag art-lojban ? NO
260loc_range:jbo canonically matches lang_tag jbo ? YES
261--------------
262loc_range:jbo matches lang_tag i-lux ? NO
263loc_range:jbo canonically matches lang_tag lb ? NO
264--------------
265loc_range:jbo matches lang_tag art-lojban ? NO
266loc_range:jbo canonically matches lang_tag jbo ? YES
267--------------
268loc_range:jbo matches lang_tag jbo ? YES
269loc_range:jbo canonically matches lang_tag jbo ? YES
270--------------
271loc_range:jbo matches lang_tag en_sl_IT ? NO
272loc_range:jbo canonically matches lang_tag en_SL_IT ? NO
273--------------
274loc_range:art-lojban matches lang_tag de-DEVA ? NO
275loc_range:jbo canonically matches lang_tag de_Deva ? NO
276--------------
277loc_range:art-lojban matches lang_tag de-DE-1996 ? NO
278loc_range:jbo canonically matches lang_tag de_DE_1996 ? NO
279--------------
280loc_range:art-lojban matches lang_tag de-DE ? NO
281loc_range:jbo canonically matches lang_tag de_DE ? NO
282--------------
283loc_range:art-lojban matches lang_tag zh_Hans ? NO
284loc_range:jbo canonically matches lang_tag zh_Hans ? NO
285--------------
286loc_range:art-lojban matches lang_tag de-CH-1996 ? NO
287loc_range:jbo canonically matches lang_tag de_CH_1996 ? NO
288--------------
289loc_range:art-lojban matches lang_tag sl_IT ? NO
290loc_range:jbo canonically matches lang_tag sl_IT ? NO
291--------------
292loc_range:art-lojban matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? NO
293loc_range:jbo canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? NO
294--------------
295loc_range:art-lojban matches lang_tag sl_IT_rozaj ? NO
296loc_range:jbo canonically matches lang_tag sl_IT_ROZAJ ? NO
297--------------
298loc_range:art-lojban matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
299loc_range:jbo canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? NO
300--------------
301loc_range:art-lojban matches lang_tag i-enochian ? NO
302loc_range:jbo canonically matches lang_tag @x=i-enochian ? NO
303--------------
304loc_range:art-lojban matches lang_tag sgn-CH-de ? NO
305loc_range:jbo canonically matches lang_tag sgn_CH_DE ? NO
306--------------
307loc_range:art-lojban matches lang_tag art-lojban ? YES
308loc_range:jbo canonically matches lang_tag jbo ? YES
309--------------
310loc_range:art-lojban matches lang_tag i-lux ? NO
311loc_range:jbo canonically matches lang_tag lb ? NO
312--------------
313loc_range:art-lojban matches lang_tag art-lojban ? YES
314loc_range:jbo canonically matches lang_tag jbo ? YES
315--------------
316loc_range:art-lojban matches lang_tag jbo ? NO
317loc_range:jbo canonically matches lang_tag jbo ? YES
318--------------
319loc_range:art-lojban matches lang_tag en_sl_IT ? NO
320loc_range:jbo canonically matches lang_tag en_SL_IT ? NO
321--------------
322loc_range:sl_IT matches lang_tag de-DEVA ? NO
323loc_range:sl_IT canonically matches lang_tag de_Deva ? NO
324--------------
325loc_range:sl_IT matches lang_tag de-DE-1996 ? NO
326loc_range:sl_IT canonically matches lang_tag de_DE_1996 ? NO
327--------------
328loc_range:sl_IT matches lang_tag de-DE ? NO
329loc_range:sl_IT canonically matches lang_tag de_DE ? NO
330--------------
331loc_range:sl_IT matches lang_tag zh_Hans ? NO
332loc_range:sl_IT canonically matches lang_tag zh_Hans ? NO
333--------------
334loc_range:sl_IT matches lang_tag de-CH-1996 ? NO
335loc_range:sl_IT canonically matches lang_tag de_CH_1996 ? NO
336--------------
337loc_range:sl_IT matches lang_tag sl_IT ? YES
338loc_range:sl_IT canonically matches lang_tag sl_IT ? YES
339--------------
340loc_range:sl_IT matches lang_tag sl_IT_nedis-a-kirti-x-xyz ? YES
341loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS@a=kirti;x=xyz ? YES
342--------------
343loc_range:sl_IT matches lang_tag sl_IT_rozaj ? YES
344loc_range:sl_IT canonically matches lang_tag sl_IT_ROZAJ ? YES
345--------------
346loc_range:sl_IT matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
347loc_range:sl_IT canonically matches lang_tag sl_IT_NEDIS_ROJAZ_1901 ? YES
348--------------
349loc_range:sl_IT matches lang_tag i-enochian ? NO
350loc_range:sl_IT canonically matches lang_tag @x=i-enochian ? NO
351--------------
352loc_range:sl_IT matches lang_tag sgn-CH-de ? NO
353loc_range:sl_IT canonically matches lang_tag sgn_CH_DE ? NO
354--------------
355loc_range:sl_IT matches lang_tag art-lojban ? NO
356loc_range:sl_IT canonically matches lang_tag jbo ? NO
357--------------
358loc_range:sl_IT matches lang_tag i-lux ? NO
359loc_range:sl_IT canonically matches lang_tag lb ? NO
360--------------
361loc_range:sl_IT matches lang_tag art-lojban ? NO
362loc_range:sl_IT canonically matches lang_tag jbo ? NO
363--------------
364loc_range:sl_IT matches lang_tag jbo ? NO
365loc_range:sl_IT canonically matches lang_tag jbo ? NO
366--------------
367loc_range:sl_IT matches lang_tag en_sl_IT ? NO
368loc_range:sl_IT canonically matches lang_tag en_SL_IT ? NO
369