collator_create3.phpt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. --TEST--
  2. create() icu >= 53.1 && icu < 54.1
  3. --EXTENSIONS--
  4. intl
  5. --SKIPIF--
  6. <?php if (version_compare(INTL_ICU_VERSION, '53.1') < 0) die('skip for ICU >= 53.1'); ?>
  7. <?php if (version_compare(INTL_ICU_VERSION, '54.1') >= 0) die('skip for ICU < 54.1'); ?>
  8. --FILE--
  9. <?php
  10. /*
  11. * Try creating collator with different locales
  12. * with Procedural and Object methods.
  13. */
  14. function ut_main()
  15. {
  16. $res_str = '';
  17. $locales = array(
  18. 'EN-US-ODESSA',
  19. 'UK_UA_ODESSA',
  20. 'uk-ua_CALIFORNIA@currency=;currency=GRN',
  21. '',
  22. 'root',
  23. 'uk@currency=EURO',
  24. '12345678911131517192123252729313335373941434547495153575961636567697173757779818385878991939597991234567891113151719212325272931333537394143454749515357596163656769717375777981838587899193959799'
  25. );
  26. foreach( $locales as $locale )
  27. {
  28. // Create Collator with the current locale.
  29. $coll = ut_coll_create( $locale );
  30. if( !is_object($coll) )
  31. {
  32. $res_str .= "Error creating collator with '$locale' locale: " .
  33. intl_get_error_message() . "\n";
  34. continue;
  35. }
  36. // Get the requested, valid and actual locales.
  37. $vloc = ut_coll_get_locale( $coll, Locale::VALID_LOCALE );
  38. $aloc = ut_coll_get_locale( $coll, Locale::ACTUAL_LOCALE );
  39. // Show them.
  40. $res_str .= "Locale: '$locale'\n" .
  41. " ULOC_REQUESTED_LOCALE = '$locale'\n" .
  42. " ULOC_VALID_LOCALE = '$vloc'\n" .
  43. " ULOC_ACTUAL_LOCALE = '$aloc'\n";
  44. }
  45. return $res_str;
  46. }
  47. include_once( 'ut_common.inc' );
  48. ut_run();
  49. ?>
  50. --EXPECTF--
  51. Locale: 'EN-US-ODESSA'
  52. ULOC_REQUESTED_LOCALE = 'EN-US-ODESSA'
  53. ULOC_VALID_LOCALE = 'en_US'
  54. ULOC_ACTUAL_LOCALE = 'root'
  55. Locale: 'UK_UA_ODESSA'
  56. ULOC_REQUESTED_LOCALE = 'UK_UA_ODESSA'
  57. ULOC_VALID_LOCALE = 'uk'
  58. ULOC_ACTUAL_LOCALE = 'uk'
  59. Locale: 'uk-ua_CALIFORNIA@currency=;currency=GRN'
  60. ULOC_REQUESTED_LOCALE = 'uk-ua_CALIFORNIA@currency=;currency=GRN'
  61. ULOC_VALID_LOCALE = 'root'
  62. ULOC_ACTUAL_LOCALE = 'root'
  63. Locale: ''
  64. ULOC_REQUESTED_LOCALE = ''
  65. ULOC_VALID_LOCALE = '%s'
  66. ULOC_ACTUAL_LOCALE = '%s'
  67. Locale: 'root'
  68. ULOC_REQUESTED_LOCALE = 'root'
  69. ULOC_VALID_LOCALE = 'root'
  70. ULOC_ACTUAL_LOCALE = 'root'
  71. Locale: 'uk@currency=EURO'
  72. ULOC_REQUESTED_LOCALE = 'uk@currency=EURO'
  73. ULOC_VALID_LOCALE = 'uk'
  74. ULOC_ACTUAL_LOCALE = 'uk'
  75. Error creating collator with '12345678911131517192123252729313335373941434547495153575961636567697173757779818385878991939597991234567891113151719212325272931333537394143454749515357596163656769717375777981838587899193959799' locale: Locale string too long, should be no longer than %d characters: U_ILLEGAL_ARGUMENT_ERROR