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