1--TEST--
2Regression: sort_wsk() and copy-on-write.
3--SKIPIF--
4<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
5--FILE--
6<?php
7/*
8 * Check if collator_sort_with_sort_keys()
9 * properly supports copy-on-write.
10 */
11
12
13/* Create two copies of the given array.
14 * Sort the array and the first copy.
15 * Check if the second copy remains unsorted.
16 */
17function test_COW( $locale, $test_array )
18{
19    $res_str = '';
20
21    $coll = ut_coll_create( $locale );
22
23    // Create two copies of the given array.
24    $copy1 = $test_array;
25    $copy2 = $test_array;
26
27    // Sort given array and the first copy of it.
28    ut_coll_sort_with_sort_keys( $coll, $test_array );
29    ut_coll_sort_with_sort_keys( $coll, $copy1      );
30
31    // Return contents of all the arrays.
32    // The second copy should remain unsorted.
33    $res_str .= dump( $test_array ) . "\n";
34    $res_str .= dump( $copy1      ) . "\n";
35    $res_str .= dump( $copy2      ) . "\n";
36
37    return $res_str;
38}
39
40function ut_main()
41{
42    $res_str = '';
43
44    $a1 = array( 'b', 'a', 'c' );
45    $a2 = array( 'в', 'а', 'б' );
46
47    $res_str .= test_COW( 'en_US', $a1 );
48    $res_str .= test_COW( 'ru_RU', $a2 );
49
50    return $res_str;
51}
52
53require_once( 'ut_common.inc' );
54ut_run();
55?>
56--EXPECT--
57array (
58  0 => 'a',
59  1 => 'b',
60  2 => 'c',
61)
62array (
63  0 => 'a',
64  1 => 'b',
65  2 => 'c',
66)
67array (
68  0 => 'b',
69  1 => 'a',
70  2 => 'c',
71)
72array (
73  0 => 'а',
74  1 => 'б',
75  2 => 'в',
76)
77array (
78  0 => 'а',
79  1 => 'б',
80  2 => 'в',
81)
82array (
83  0 => 'в',
84  1 => 'а',
85  2 => 'б',
86)
87