Skip to content

Commit 4a4244f

Browse files
committed
add tests
1 parent f511a2f commit 4a4244f

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
--TEST--
2+
collator_sort() and collator_asort() report conversion errors
3+
--EXTENSIONS--
4+
intl
5+
--FILE--
6+
<?php
7+
class BadProceduralString {
8+
public function __toString(): string {
9+
return "\xFF";
10+
}
11+
}
12+
13+
$coll = collator_create('en_US');
14+
15+
$array = ['b', new BadProceduralString(), 'a'];
16+
var_dump(collator_sort($coll, $array, Collator::SORT_STRING));
17+
var_dump($array[0]);
18+
var_dump($array[1] instanceof BadProceduralString);
19+
var_dump($array[2]);
20+
var_dump(intl_get_error_code() === U_INVALID_CHAR_FOUND);
21+
echo intl_get_error_message(), "\n";
22+
var_dump(collator_get_error_code($coll) === U_INVALID_CHAR_FOUND);
23+
echo collator_get_error_message($coll), "\n";
24+
25+
$array = ['b' => 'b', 'bad' => new BadProceduralString(), 'a' => 'a'];
26+
var_dump(collator_asort($coll, $array, Collator::SORT_STRING));
27+
var_dump(array_keys($array));
28+
var_dump(intl_get_error_code() === U_INVALID_CHAR_FOUND);
29+
echo intl_get_error_message(), "\n";
30+
var_dump(collator_get_error_code($coll) === U_INVALID_CHAR_FOUND);
31+
echo collator_get_error_message($coll), "\n";
32+
?>
33+
--EXPECT--
34+
bool(false)
35+
string(1) "b"
36+
bool(true)
37+
string(1) "a"
38+
bool(true)
39+
collator_sort(): Error comparing array values: U_INVALID_CHAR_FOUND
40+
bool(true)
41+
collator_sort(): Error comparing array values: U_INVALID_CHAR_FOUND
42+
bool(false)
43+
array(3) {
44+
[0]=>
45+
string(1) "b"
46+
[1]=>
47+
string(3) "bad"
48+
[2]=>
49+
string(1) "a"
50+
}
51+
bool(true)
52+
collator_asort(): Error comparing array values: U_INVALID_CHAR_FOUND
53+
bool(true)
54+
collator_asort(): Error comparing array values: U_INVALID_CHAR_FOUND

0 commit comments

Comments
 (0)