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