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