1--TEST--
2sort()
3--EXTENSIONS--
4intl
5--SKIPIF--
6<?php if (version_compare(INTL_ICU_VERSION, '51.2') < 0) die('skip for ICU >= 51.2'); ?>
7--FILE--
8<?php
9
10/*
11 * Sort arrays using various locales.
12 */
13
14
15$test_num = 1;
16
17/*
18 * Sort arrays in the given list using specified locale.
19 */
20function sort_arrays( $locale, $arrays, $sort_flag = Collator::SORT_REGULAR )
21{
22    $res_str = '';
23
24    $coll = ut_coll_create( $locale );
25
26    foreach( $arrays as $array )
27    {
28        // Sort array values
29        $res_val = ut_coll_sort( $coll, $array, $sort_flag );
30
31        // Concatenate the sorted array and function result
32        // with output string.
33        $res_dump = "\n" . dump( $array ) .
34                    "\n Result: " . dump( $res_val );
35
36        // Preppend test signature to output string
37        $md5 = md5( $res_dump );
38
39        global $test_num;
40
41        $res_str .= "\n\n".
42                    "Test $test_num.$md5:" .
43                    $res_dump;
44        ++$test_num;
45    }
46
47    return $res_str;
48}
49
50function ut_main()
51{
52    global $test_num;
53    $test_num = 1;
54    $res_str = '';
55
56    // Sort an array in SORT_REGULAR mode using en_US locale.
57    $test_params = array(
58        array( 'abc', 'abd', 'aaa' ),
59        array( 'm'  , '1'  , '_'   ),
60        array( 'a'  , 'aaa', 'aa'  ),
61        array( 'ba' , 'b'  , 'ab'  ),
62        array( 'e'  , 'c'  , 'a'   ),
63        array( '100', '25' , '36'  ),
64        array( 5    , '30' , 2     ),
65        array( 'd'  , ''   , ' a'  ),
66        array( 'd ' , 'f ' , ' a'  ),
67        array( 'a'  , null , '3'   ),
68        array( 'y'  , 'k'  , 'i' )
69    );
70
71    $res_str .= sort_arrays( 'en_US', $test_params );
72
73    $test_params = array(
74        array( '100', '25' , '36'  ),
75        array( 5    , '30' , 2     ),
76        array( 'd'  , ''   , ' a'  ),
77        array( 'y'  , 'k'  , 'i' )
78    );
79
80    // Sort in en_US locale with SORT_STRING flag
81    $res_str .= sort_arrays( 'en_US', $test_params, Collator::SORT_STRING );
82
83
84    // Sort a non-ASCII array using ru_RU locale.
85    $test_params = array(
86        array( 'абг', 'абв', 'ааа', 'abc' ),
87        array( 'аа', 'ааа' , 'а' )
88    );
89
90    $res_str .= sort_arrays( 'ru_RU', $test_params );
91
92    // Sort an array using Lithuanian locale.
93    $test_params = array(
94        array( 'y'  , 'k'  , 'i' )
95    );
96
97    $res_str .= sort_arrays( 'lt_LT', $test_params );
98
99    return $res_str;
100}
101
102include_once( 'ut_common.inc' );
103ut_run();
104?>
105--EXPECT--
106Test 1.e8f1cd28133d79ecd660002f1c660d0e:
107array (
108  0 => 'aaa',
109  1 => 'abc',
110  2 => 'abd',
111)
112 Result: true
113
114Test 2.c2ded12173dd2996927378cae37eb275:
115array (
116  0 => '_',
117  1 => '1',
118  2 => 'm',
119)
120 Result: true
121
122Test 3.54071c968d71cb98c5d379145f8d7d38:
123array (
124  0 => 'a',
125  1 => 'aa',
126  2 => 'aaa',
127)
128 Result: true
129
130Test 4.19abe63d6f6dfef65b0e3c9ab4826b07:
131array (
132  0 => 'ab',
133  1 => 'b',
134  2 => 'ba',
135)
136 Result: true
137
138Test 5.9a8dc0a9bc771368c2f1fc3d02754610:
139array (
140  0 => 'a',
141  1 => 'c',
142  2 => 'e',
143)
144 Result: true
145
146Test 6.ab530b060e5e54a65bfb8b9f8fc61870:
147array (
148  0 => '25',
149  1 => '36',
150  2 => '100',
151)
152 Result: true
153
154Test 7.0718dd838509017bded2ed307a6e785f:
155array (
156  0 => 2,
157  1 => 5,
158  2 => '30',
159)
160 Result: true
161
162Test 8.923d65739c5219c634616ffd100a50e4:
163array (
164  0 => '',
165  1 => ' a',
166  2 => 'd',
167)
168 Result: true
169
170Test 9.289bc2f28e87d3201ec9d7e8477ae1b0:
171array (
172  0 => ' a',
173  1 => 'd ',
174  2 => 'f ',
175)
176 Result: true
177
178Test 10.de0fd958484f2377a645835d7fbcf124:
179array (
180  0 => NULL,
181  1 => '3',
182  2 => 'a',
183)
184 Result: true
185
186Test 11.dd2b8f0adb37c45d528cad1a0cc0f361:
187array (
188  0 => 'i',
189  1 => 'k',
190  2 => 'y',
191)
192 Result: true
193
194Test 12.1e6b4d6f7df9d4580317634ea46d8208:
195array (
196  0 => '100',
197  1 => '25',
198  2 => '36',
199)
200 Result: true
201
202Test 13.cec115dc9850b98dfbdf102efa09e61b:
203array (
204  0 => 2,
205  1 => '30',
206  2 => 5,
207)
208 Result: true
209
210Test 14.923d65739c5219c634616ffd100a50e4:
211array (
212  0 => '',
213  1 => ' a',
214  2 => 'd',
215)
216 Result: true
217
218Test 15.dd2b8f0adb37c45d528cad1a0cc0f361:
219array (
220  0 => 'i',
221  1 => 'k',
222  2 => 'y',
223)
224 Result: true
225
226Test 16.49056308afb2b800363c5baa735ed247:
227array (
228  0 => 'ааа',
229  1 => 'абв',
230  2 => 'абг',
231  3 => 'abc',
232)
233 Result: true
234
235Test 17.91480b10473a0c96a4cd6d88c23c577a:
236array (
237  0 => 'а',
238  1 => 'аа',
239  2 => 'ааа',
240)
241 Result: true
242
243Test 18.fdd3fe3981476039164aa000bf9177f2:
244array (
245  0 => 'i',
246  1 => 'y',
247  2 => 'k',
248)
249 Result: true
250