1--TEST--
2Test iconv_mime_encode() function : usage variations - Pass different data types to headers arg
3--SKIPIF--
4<?php
5extension_loaded('iconv') or die('skip');
6function_exists('iconv_mime_decode_headers') or die("skip iconv_mime_decode_headers() is not available in this build");
7?>
8--FILE--
9<?php
10/* Prototype  : array iconv_mime_decode_headers(string headers [, int mode, string charset])
11 * Description: Decodes multiple mime header fields
12 * Source code: ext/iconv/iconv.c
13 */
14
15/*
16 * Pass different data types to $str argument to see how iconv_mime_decode_headers() behaves
17 */
18
19echo "*** Testing iconv_mime_decode_headers() : usage variations ***\n";
20
21// Initialise function arguments not being substituted
22$headers = <<<EOF
23Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
24To: example@example.com
25Date: Thu, 1 Jan 1970 00:00:00 +0000
26Message-Id: <example@example.com>
27Received: from localhost (localhost [127.0.0.1]) by localhost
28    with SMTP id example for <example@example.com>;
29    Thu, 1 Jan 1970 00:00:00 +0000 (UTC)
30    (envelope-from example-return-0000-example=example.com@example.com)
31Received: (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000
32
33EOF;
34
35$mode = ICONV_MIME_DECODE_CONTINUE_ON_ERROR;
36$charset = 'ISO-8859-1';
37
38
39//get an unset variable
40$unset_var = 10;
41unset ($unset_var);
42
43// get a class
44class classA
45{
46  public function __toString() {
47    return "Class A object";
48  }
49}
50
51// heredoc string
52$heredoc = <<<EOT
53hello world
54EOT;
55
56// get a resource variable
57$fp = fopen(__FILE__, "r");
58
59// unexpected values to be passed to $str argument
60$inputs = array(
61
62       // int data
63/*1*/  0,
64       1,
65       12345,
66       -2345,
67
68       // float data
69/*5*/  10.5,
70       -10.5,
71       12.3456789000e10,
72       12.3456789000E-10,
73       .5,
74
75       // null data
76/*10*/ NULL,
77       null,
78
79       // boolean data
80/*12*/ true,
81       false,
82       TRUE,
83       FALSE,
84
85       // empty data
86/*16*/ "",
87       '',
88
89       // string data
90/*18*/ "string",
91       'string',
92       $heredoc,
93
94       // object data
95/*21*/ new classA(),
96
97       // undefined data
98/*22*/ @$undefined_var,
99
100       // unset data
101/*23*/ @$unset_var,
102
103       // resource variable
104/*24*/ $fp
105);
106
107// loop through each element of $inputs to check the behavior of iconv_mime_decode_headers()
108$iterator = 1;
109foreach($inputs as $input) {
110  echo "\n-- Iteration $iterator --\n";
111  var_dump( iconv_mime_decode_headers($input, $mode, $charset));
112  $iterator++;
113};
114
115fclose($fp);
116
117echo "Done";
118?>
119--EXPECTF--
120*** Testing iconv_mime_decode_headers() : usage variations ***
121
122-- Iteration 1 --
123array(0) {
124}
125
126-- Iteration 2 --
127array(0) {
128}
129
130-- Iteration 3 --
131array(0) {
132}
133
134-- Iteration 4 --
135array(0) {
136}
137
138-- Iteration 5 --
139array(0) {
140}
141
142-- Iteration 6 --
143array(0) {
144}
145
146-- Iteration 7 --
147array(0) {
148}
149
150-- Iteration 8 --
151array(0) {
152}
153
154-- Iteration 9 --
155array(0) {
156}
157
158-- Iteration 10 --
159array(0) {
160}
161
162-- Iteration 11 --
163array(0) {
164}
165
166-- Iteration 12 --
167array(0) {
168}
169
170-- Iteration 13 --
171array(0) {
172}
173
174-- Iteration 14 --
175array(0) {
176}
177
178-- Iteration 15 --
179array(0) {
180}
181
182-- Iteration 16 --
183array(0) {
184}
185
186-- Iteration 17 --
187array(0) {
188}
189
190-- Iteration 18 --
191array(0) {
192}
193
194-- Iteration 19 --
195array(0) {
196}
197
198-- Iteration 20 --
199array(0) {
200}
201
202-- Iteration 21 --
203array(0) {
204}
205
206-- Iteration 22 --
207array(0) {
208}
209
210-- Iteration 23 --
211array(0) {
212}
213
214-- Iteration 24 --
215
216Warning: iconv_mime_decode_headers() expects parameter 1 to be string, resource given in %s on line %d
217bool(false)
218Done
219