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