1--TEST--
2Test parse_url() function : usage variations  - unexpected type for arg 2.
3--SKIPIF--
4<?php if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platforms only"); ?>
5--FILE--
6<?php
7/* Prototype  : proto mixed parse_url(string url, [int url_component])
8 * Description: Parse a URL and return its components
9 * Source code: ext/standard/url.c
10 * Alias to functions:
11 */
12
13function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
14	echo "Error: $err_no - $err_msg, $filename($linenum)\n";
15}
16set_error_handler('test_error_handler');
17
18echo "*** Testing parse_url() : usage variations ***\n";
19
20// Initialise function arguments not being substituted (if any)
21$url = 'http://secret:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123';
22
23//get an unset variable
24$unset_var = 10;
25unset ($unset_var);
26
27//array of values to iterate over
28$values = array(
29
30      // float data
31      10.5,
32      -10.5,
33      10.1234567e10,
34      10.7654321E-10,
35      .5,
36
37      // array data
38      array(),
39      array(0),
40      array(1),
41      array(1, 2),
42      array('color' => 'red', 'item' => 'pen'),
43
44      // null data
45      NULL,
46      null,
47
48      // boolean data
49      true,
50      false,
51      TRUE,
52      FALSE,
53
54      // empty data
55      "",
56      '',
57
58      // string data
59      "string",
60      'string',
61
62      // object data
63      new stdclass(),
64
65      // undefined data
66      $undefined_var,
67
68      // unset data
69      $unset_var,
70);
71
72// loop through each element of the array for url_component
73
74foreach($values as $value) {
75      echo "\nArg value $value \n";
76      var_dump( parse_url($url, $value) );
77};
78
79echo "Done";
80?>
81--EXPECTF--
82*** Testing parse_url() : usage variations ***
83Error: 8 - Undefined variable: undefined_var, %s(61)
84Error: 8 - Undefined variable: unset_var, %s(64)
85
86Arg value 10.5
87Error: 2 - parse_url(): Invalid URL component identifier 10, %s(71)
88bool(false)
89
90Arg value -10.5
91array(8) {
92  ["scheme"]=>
93  string(4) "http"
94  ["host"]=>
95  string(11) "www.php.net"
96  ["port"]=>
97  int(80)
98  ["user"]=>
99  string(6) "secret"
100  ["pass"]=>
101  string(7) "hideout"
102  ["path"]=>
103  string(10) "/index.php"
104  ["query"]=>
105  string(31) "test=1&test2=char&test3=mixesCI"
106  ["fragment"]=>
107  string(16) "some_page_ref123"
108}
109
110Arg value 101234567000
111array(8) {
112  ["scheme"]=>
113  string(4) "http"
114  ["host"]=>
115  string(11) "www.php.net"
116  ["port"]=>
117  int(80)
118  ["user"]=>
119  string(6) "secret"
120  ["pass"]=>
121  string(7) "hideout"
122  ["path"]=>
123  string(10) "/index.php"
124  ["query"]=>
125  string(31) "test=1&test2=char&test3=mixesCI"
126  ["fragment"]=>
127  string(16) "some_page_ref123"
128}
129
130Arg value 1.07654321E-9
131string(4) "http"
132
133Arg value 0.5
134string(4) "http"
135Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
136
137Arg value Array
138Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
139NULL
140Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
141
142Arg value Array
143Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
144NULL
145Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
146
147Arg value Array
148Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
149NULL
150Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
151
152Arg value Array
153Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
154NULL
155Error: 8 - Array to string conversion, %sparse_url_variation_002_32bit.php(%d)
156
157Arg value Array
158Error: 2 - parse_url() expects parameter 2 to be long, array given, %s(71)
159NULL
160
161Arg value
162string(4) "http"
163
164Arg value
165string(4) "http"
166
167Arg value 1
168string(11) "www.php.net"
169
170Arg value
171string(4) "http"
172
173Arg value 1
174string(11) "www.php.net"
175
176Arg value
177string(4) "http"
178
179Arg value
180Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
181NULL
182
183Arg value
184Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
185NULL
186
187Arg value string
188Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
189NULL
190
191Arg value string
192Error: 2 - parse_url() expects parameter 2 to be long, string given, %s(71)
193NULL
194Error: 4096 - Object of class stdClass could not be converted to string, %s(70)
195
196Arg value
197Error: 2 - parse_url() expects parameter 2 to be long, object given, %s(71)
198NULL
199
200Arg value
201string(4) "http"
202
203Arg value
204string(4) "http"
205Done