collator_compare_variant2.phpt 3.1 KB

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