msgfmt_fail.phpt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. --TEST--
  2. msgfmt creation failures icu <= 4.2
  3. --SKIPIF--
  4. <?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
  5. <?php if(version_compare(INTL_ICU_VERSION, '4.3', '<') != 1) print 'skip'; ?>
  6. --FILE--
  7. <?php
  8. function err($fmt) {
  9. if(!$fmt) {
  10. echo var_export(intl_get_error_message(), true)."\n";
  11. }
  12. }
  13. function print_exception($e) {
  14. echo "\n" . get_class($e) . ": " . $e->getMessage()
  15. . " in " . $e->getFile() . " on line " . $e->getLine() . "\n";
  16. }
  17. function crt($t, $l, $s) {
  18. switch(true) {
  19. case $t == "O":
  20. try {
  21. return new MessageFormatter($l, $s);
  22. } catch (Throwable $e) {
  23. print_exception($e);
  24. return null;
  25. }
  26. break;
  27. case $t == "C":
  28. return MessageFormatter::create($l, $s);
  29. break;
  30. case $t == "P":
  31. return msgfmt_create($l, $s);
  32. break;
  33. }
  34. }
  35. $args = array(
  36. array(null, null),
  37. array("whatever", "{0,whatever}"),
  38. array(array(), array()),
  39. array("en", "{0,choice}"),
  40. array("fr", "{0,"),
  41. array("en_US", "\xD0"),
  42. );
  43. try {
  44. $fmt = new MessageFormatter();
  45. } catch (TypeError $e) {
  46. print_exception($e);
  47. $fmt = null;
  48. }
  49. err($fmt);
  50. $fmt = msgfmt_create();
  51. err($fmt);
  52. $fmt = MessageFormatter::create();
  53. err($fmt);
  54. try {
  55. $fmt = new MessageFormatter('en');
  56. } catch (TypeError $e) {
  57. print_exception($e);
  58. $fmt = null;
  59. }
  60. err($fmt);
  61. $fmt = msgfmt_create('en');
  62. err($fmt);
  63. $fmt = MessageFormatter::create('en');
  64. err($fmt);
  65. foreach($args as $arg) {
  66. $fmt = crt("O", $arg[0], $arg[1]);
  67. err($fmt);
  68. $fmt = crt("C", $arg[0], $arg[1]);
  69. err($fmt);
  70. $fmt = crt("P", $arg[0], $arg[1]);
  71. err($fmt);
  72. }
  73. ?>
  74. --EXPECTF--
  75. TypeError: MessageFormatter::__construct() expects exactly 2 parameters, 0 given in %s on line %d
  76. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  77. Warning: msgfmt_create() expects exactly 2 parameters, 0 given in %s on line %d
  78. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  79. Warning: MessageFormatter::create() expects exactly 2 parameters, 0 given in %s on line %d
  80. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  81. TypeError: MessageFormatter::__construct() expects exactly 2 parameters, 1 given in %s on line %d
  82. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  83. Warning: msgfmt_create() expects exactly 2 parameters, 1 given in %s on line %d
  84. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  85. Warning: MessageFormatter::create() expects exactly 2 parameters, 1 given in %s on line %d
  86. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  87. IntlException: Constructor failed in %smsgfmt_fail2.php on line %d
  88. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  89. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  90. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  91. IntlException: Constructor failed in %smsgfmt_fail2.php on line %d
  92. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  93. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  94. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  95. TypeError: MessageFormatter::__construct() expects parameter 1 to be string, array given in %s on line %d
  96. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  97. Warning: MessageFormatter::create() expects parameter 1 to be string, array given in %s on line %d
  98. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  99. Warning: msgfmt_create() expects parameter 1 to be string, array given in %s on line %d
  100. 'msgfmt_create: unable to parse input parameters: U_ILLEGAL_ARGUMENT_ERROR'
  101. IntlException: Constructor failed in %smsgfmt_fail2.php on line %d
  102. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  103. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  104. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  105. IntlException: Constructor failed in %smsgfmt_fail2.php on line %d
  106. 'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES'
  107. 'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES'
  108. 'msgfmt_create: message formatter creation failed: U_UNMATCHED_BRACES'
  109. IntlException: Constructor failed in %smsgfmt_fail2.php on line %d
  110. 'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND'
  111. 'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND'
  112. 'msgfmt_create: error converting pattern to UTF-16: U_INVALID_CHAR_FOUND'