xref: /PHP-7.4/ext/intl/tests/msgfmt_fail2.phpt (revision 74cf2eb8)
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