diff options
Diffstat (limited to 'ext/intl/tests/collator_sort.phpt')
-rw-r--r-- | ext/intl/tests/collator_sort.phpt | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/ext/intl/tests/collator_sort.phpt b/ext/intl/tests/collator_sort.phpt new file mode 100644 index 0000000..5cefe2f --- /dev/null +++ b/ext/intl/tests/collator_sort.phpt @@ -0,0 +1,247 @@ +--TEST-- +sort() +--SKIPIF-- +<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?> +--FILE-- +<?php + +/* + * Sort arrays using various locales. + */ + + +$test_num = 1; + +/* + * Sort arrays in the given list using specified locale. + */ +function sort_arrays( $locale, $arrays, $sort_flag = Collator::SORT_REGULAR ) +{ + $res_str = ''; + + $coll = ut_coll_create( $locale ); + + foreach( $arrays as $array ) + { + // Sort array values + $res_val = ut_coll_sort( $coll, $array, $sort_flag ); + + // Concatenate the sorted array and function result + // with output string. + $res_dump = "\n" . dump( $array ) . + "\n Result: " . dump( $res_val ); + + // Preppend test signature to output string + $md5 = md5( $res_dump ); + + global $test_num; + + $res_str .= "\n\n". + "Test $test_num.$md5:" . + $res_dump; + ++$test_num; + } + + return $res_str; +} + +function ut_main() +{ + global $test_num; + $test_num = 1; + $res_str = ''; + + // Sort an array in SORT_REGULAR mode using en_US locale. + $test_params = array( + array( 'abc', 'abd', 'aaa' ), + array( 'm' , '1' , '_' ), + array( 'a' , 'aaa', 'aa' ), + array( 'ba' , 'b' , 'ab' ), + array( 'e' , 'c' , 'a' ), + array( '100', '25' , '36' ), + array( 5 , '30' , 2 ), + array( 'd' , '' , ' a' ), + array( 'd ' , 'f ' , ' a' ), + array( 'a' , null , '3' ), + array( 'y' , 'k' , 'i' ) + ); + + $res_str .= sort_arrays( 'en_US', $test_params ); + + $test_params = array( + array( '100', '25' , '36' ), + array( 5 , '30' , 2 ), + array( 'd' , '' , ' a' ), + array( 'y' , 'k' , 'i' ) + ); + + // Sort in en_US locale with SORT_STRING flag + $res_str .= sort_arrays( 'en_US', $test_params, Collator::SORT_STRING ); + + + // Sort a non-ASCII array using ru_RU locale. + $test_params = array( + array( 'абг', 'абв', 'ааа', 'abc' ), + array( 'аа', 'ааа' , 'а' ) + ); + + $res_str .= sort_arrays( 'ru_RU', $test_params ); + + // Sort an array using Lithuanian locale. + $test_params = array( + array( 'y' , 'k' , 'i' ) + ); + + $res_str .= sort_arrays( 'lt_LT', $test_params ); + + return $res_str; +} + +include_once( 'ut_common.inc' ); +ut_run(); +?> +--EXPECT-- +Test 1.e8f1cd28133d79ecd660002f1c660d0e: +array ( + 0 => 'aaa', + 1 => 'abc', + 2 => 'abd', +) + Result: true + +Test 2.c2ded12173dd2996927378cae37eb275: +array ( + 0 => '_', + 1 => '1', + 2 => 'm', +) + Result: true + +Test 3.54071c968d71cb98c5d379145f8d7d38: +array ( + 0 => 'a', + 1 => 'aa', + 2 => 'aaa', +) + Result: true + +Test 4.19abe63d6f6dfef65b0e3c9ab4826b07: +array ( + 0 => 'ab', + 1 => 'b', + 2 => 'ba', +) + Result: true + +Test 5.9a8dc0a9bc771368c2f1fc3d02754610: +array ( + 0 => 'a', + 1 => 'c', + 2 => 'e', +) + Result: true + +Test 6.ab530b060e5e54a65bfb8b9f8fc61870: +array ( + 0 => '25', + 1 => '36', + 2 => '100', +) + Result: true + +Test 7.0718dd838509017bded2ed307a6e785f: +array ( + 0 => 2, + 1 => 5, + 2 => '30', +) + Result: true + +Test 8.923d65739c5219c634616ffd100a50e4: +array ( + 0 => '', + 1 => ' a', + 2 => 'd', +) + Result: true + +Test 9.289bc2f28e87d3201ec9d7e8477ae1b0: +array ( + 0 => ' a', + 1 => 'd ', + 2 => 'f ', +) + Result: true + +Test 10.de0fd958484f2377a645835d7fbcf124: +array ( + 0 => NULL, + 1 => '3', + 2 => 'a', +) + Result: true + +Test 11.dd2b8f0adb37c45d528cad1a0cc0f361: +array ( + 0 => 'i', + 1 => 'k', + 2 => 'y', +) + Result: true + +Test 12.1e6b4d6f7df9d4580317634ea46d8208: +array ( + 0 => '100', + 1 => '25', + 2 => '36', +) + Result: true + +Test 13.cec115dc9850b98dfbdf102efa09e61b: +array ( + 0 => 2, + 1 => '30', + 2 => 5, +) + Result: true + +Test 14.923d65739c5219c634616ffd100a50e4: +array ( + 0 => '', + 1 => ' a', + 2 => 'd', +) + Result: true + +Test 15.dd2b8f0adb37c45d528cad1a0cc0f361: +array ( + 0 => 'i', + 1 => 'k', + 2 => 'y', +) + Result: true + +Test 16.ca0e38a2e3147dd97070f2128f140934: +array ( + 0 => 'abc', + 1 => 'ааа', + 2 => 'абв', + 3 => 'абг', +) + Result: true + +Test 17.91480b10473a0c96a4cd6d88c23c577a: +array ( + 0 => 'а', + 1 => 'аа', + 2 => 'ааа', +) + Result: true + +Test 18.fdd3fe3981476039164aa000bf9177f2: +array ( + 0 => 'i', + 1 => 'y', + 2 => 'k', +) + Result: true |