1--TEST--
2Test iconv_set_encoding() function : error functionality
3--SKIPIF--
4<?php
5extension_loaded('iconv') or die('skip');
6function_exists('iconv_set_encoding') or die("skip iconv_set_encoding() is not available in this build");
7?>
8--INI--
9error_reporting=E_ALL & ~E_DEPRECATED
10--FILE--
11<?php
12/* Prototype  : bool iconv_set_encoding(string type, string charset)
13 * Description: Sets internal encoding and output encoding for ob_iconv_handler()
14 * Source code: ext/iconv/iconv.c
15 */
16
17/*
18 * Test Error functionality of iconv_get_encoding
19 */
20
21echo "*** Testing iconv_set_encoding() : error functionality ***\n";
22
23//get an unset variable
24$unset_var = 10;
25unset ($unset_var);
26
27// get a class
28class classA
29{
30  public function __toString() {
31    return "UTF-8";
32  }
33}
34
35// heredoc string
36$heredoc = <<<EOT
37Nothing
38EOT;
39
40// get a resource variable
41$fp = fopen(__FILE__, "r");
42
43// unexpected values to be passed to $encoding argument
44$inputs = array(
45
46       // int data
47/*1*/  0,
48       1,
49       12345,
50       -2345,
51
52       // float data
53/*5*/  10.5,
54       -10.5,
55       12.3456789000e10,
56       12.3456789000E-10,
57       .5,
58
59       // null data
60/*10*/ NULL,
61       null,
62
63       // boolean data
64/*12*/ true,
65       false,
66       TRUE,
67       FALSE,
68
69       // empty data
70/*16*/ "",
71       '',
72
73       // invalid string data
74/*18*/ "Nothing",
75       'Nothing',
76       $heredoc,
77
78       // object data
79/*21*/ new classA(),
80
81       // undefined data
82/*22*/ @$undefined_var,
83
84       // unset data
85/*23*/ @$unset_var,
86
87       // resource variable
88/*24*/ $fp
89);
90
91// loop through each element of $inputs to check the behavior of mb_regex_encoding()
92$iterator = 1;
93foreach($inputs as $input) {
94  echo "\n-- Iteration $iterator --\n";
95  var_dump( iconv_set_encoding("internal_encoding", $input) );
96  var_dump( iconv_set_encoding("input_encoding", $input) );
97  var_dump( iconv_set_encoding("output_encoding", $input) );
98  var_dump( iconv_get_encoding("internal_encoding") );
99  var_dump( iconv_get_encoding("input_encoding") );
100  var_dump( iconv_get_encoding("output_encoding") );
101
102  $iterator++;
103};
104
105fclose($fp);
106
107echo "Done";
108?>
109--EXPECTF--
110*** Testing iconv_set_encoding() : error functionality ***
111
112-- Iteration 1 --
113bool(true)
114bool(true)
115bool(true)
116string(1) "0"
117string(1) "0"
118string(1) "0"
119
120-- Iteration 2 --
121bool(true)
122bool(true)
123bool(true)
124string(1) "1"
125string(1) "1"
126string(1) "1"
127
128-- Iteration 3 --
129bool(true)
130bool(true)
131bool(true)
132string(5) "12345"
133string(5) "12345"
134string(5) "12345"
135
136-- Iteration 4 --
137bool(true)
138bool(true)
139bool(true)
140string(5) "-2345"
141string(5) "-2345"
142string(5) "-2345"
143
144-- Iteration 5 --
145bool(true)
146bool(true)
147bool(true)
148string(4) "10.5"
149string(4) "10.5"
150string(4) "10.5"
151
152-- Iteration 6 --
153bool(true)
154bool(true)
155bool(true)
156string(5) "-10.5"
157string(5) "-10.5"
158string(5) "-10.5"
159
160-- Iteration 7 --
161bool(true)
162bool(true)
163bool(true)
164string(12) "123456789000"
165string(12) "123456789000"
166string(12) "123456789000"
167
168-- Iteration 8 --
169bool(true)
170bool(true)
171bool(true)
172string(13) "1.23456789E-9"
173string(13) "1.23456789E-9"
174string(13) "1.23456789E-9"
175
176-- Iteration 9 --
177bool(true)
178bool(true)
179bool(true)
180string(3) "0.5"
181string(3) "0.5"
182string(3) "0.5"
183
184-- Iteration 10 --
185bool(true)
186bool(true)
187bool(true)
188string(5) "UTF-8"
189string(5) "UTF-8"
190string(5) "UTF-8"
191
192-- Iteration 11 --
193bool(true)
194bool(true)
195bool(true)
196string(5) "UTF-8"
197string(5) "UTF-8"
198string(5) "UTF-8"
199
200-- Iteration 12 --
201bool(true)
202bool(true)
203bool(true)
204string(1) "1"
205string(1) "1"
206string(1) "1"
207
208-- Iteration 13 --
209bool(true)
210bool(true)
211bool(true)
212string(5) "UTF-8"
213string(5) "UTF-8"
214string(5) "UTF-8"
215
216-- Iteration 14 --
217bool(true)
218bool(true)
219bool(true)
220string(1) "1"
221string(1) "1"
222string(1) "1"
223
224-- Iteration 15 --
225bool(true)
226bool(true)
227bool(true)
228string(5) "UTF-8"
229string(5) "UTF-8"
230string(5) "UTF-8"
231
232-- Iteration 16 --
233bool(true)
234bool(true)
235bool(true)
236string(5) "UTF-8"
237string(5) "UTF-8"
238string(5) "UTF-8"
239
240-- Iteration 17 --
241bool(true)
242bool(true)
243bool(true)
244string(5) "UTF-8"
245string(5) "UTF-8"
246string(5) "UTF-8"
247
248-- Iteration 18 --
249bool(true)
250bool(true)
251bool(true)
252string(7) "Nothing"
253string(7) "Nothing"
254string(7) "Nothing"
255
256-- Iteration 19 --
257bool(true)
258bool(true)
259bool(true)
260string(7) "Nothing"
261string(7) "Nothing"
262string(7) "Nothing"
263
264-- Iteration 20 --
265bool(true)
266bool(true)
267bool(true)
268string(7) "Nothing"
269string(7) "Nothing"
270string(7) "Nothing"
271
272-- Iteration 21 --
273bool(true)
274bool(true)
275bool(true)
276string(5) "UTF-8"
277string(5) "UTF-8"
278string(5) "UTF-8"
279
280-- Iteration 22 --
281bool(true)
282bool(true)
283bool(true)
284string(5) "UTF-8"
285string(5) "UTF-8"
286string(5) "UTF-8"
287
288-- Iteration 23 --
289bool(true)
290bool(true)
291bool(true)
292string(5) "UTF-8"
293string(5) "UTF-8"
294string(5) "UTF-8"
295
296-- Iteration 24 --
297
298Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
299NULL
300
301Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
302NULL
303
304Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
305NULL
306string(5) "UTF-8"
307string(5) "UTF-8"
308string(5) "UTF-8"
309Done