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