1--TEST-- 2compare() 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 * Compare various string pairs using various locales. 12 */ 13 14 15/* 16 * Converts comparison result to a character. 17 */ 18function cmp_to_char( $comp_res ) 19{ 20 switch( $comp_res ) 21 { 22 case 0: // UCOL_EQUAL 23 return '='; 24 case 1: // UCOL_GREATER 25 return '>'; 26 case -1: // UCOL_LESS 27 return '<'; 28 default: 29 return '?'; 30 } 31} 32 33/* 34 * Compare string pairs in the given array 35 * using specified locale. 36 */ 37function compare_pairs( $locale, $test_array ) 38{ 39 $res_str = ''; 40 41 $coll = ut_coll_create( $locale ); 42 43 foreach( $test_array as $test_strings ) 44 { 45 list( $str1, $str2 ) = $test_strings; 46 47 // Compare strings. 48 $res_val = cmp_to_char( ut_coll_compare( $coll, $str1, $str2 ) ); 49 50 // Concatenate result strings. 51 $res_str .= dump( $str1 ) . 52 ' ' . $res_val . ' ' . 53 dump( $str2 ) . "\n"; 54 } 55 56 return $res_str; 57 58} 59 60function ut_main() 61{ 62 $res_str = ''; 63 64 // Compare strings using en_US locale. 65 $test_params = array( 66 array( 'abc', 'abc' ), 67 array( 'Abc', 'abc' ), 68 array( 'a' , 'abc' ), 69 array( 'a' , '' ), 70 array( '' , '' ), 71 array( 'a' , 'b' ), 72 array( 'ab' , 'b' ), 73 array( 'ab' , 'a' ), 74 array( 123 , 'abc' ), 75 array( 'ac' , '' ), 76 array( '.' , '.' ), 77 // Try to compare long strings. 78 array( 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde', 79 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea'), 80 ); 81 82 $res_str .= compare_pairs( 'en_US', $test_params ); 83 84 85 // Compare strings using ru_RU locale. 86 $test_params = array( 87 array( 'а', 'б' ), 88 array( 'а', 'аа' ), 89 array( 'аб', 'ба' ), 90 array( 'а', ',' ), 91 array( 'а', 'b' ), 92 array( 'а', 'bb' ), 93 array( 'а', 'ab' ), 94 array( 'а', '' ) 95 ); 96 97 $res_str .= compare_pairs( 'ru_RU', $test_params ); 98 99 100 // Compare strings using lt_LT locale. 101 $test_params = array( 102 array( 'y', 'k' ) 103 ); 104 105 $res_str .= compare_pairs( 'lt_LT', $test_params ); 106 107 return $res_str; 108} 109 110include_once( 'ut_common.inc' ); 111ut_run(); 112?> 113--EXPECT-- 114'abc' = 'abc' 115'Abc' > 'abc' 116'a' < 'abc' 117'a' > '' 118'' = '' 119'a' < 'b' 120'ab' < 'b' 121'ab' > 'a' 122123 < 'abc' 123'ac' > '' 124'.' = '.' 125'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde' < 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea' 126'а' < 'б' 127'а' < 'аа' 128'аб' < 'ба' 129'а' > ',' 130'а' < 'b' 131'а' < 'bb' 132'а' < 'ab' 133'а' > '' 134'y' < 'k' 135