1--TEST--
2Test imagecolorallocate() function : usage variations  - passing different data types to third argument
3--SKIPIF--
4<?php
5if(!extension_loaded('gd')) {
6    die('skip gd extension is not loaded');
7}
8if(!function_exists('imagecreatetruecolor')) {
9    die('skip imagecreatetruecolor function is not available');
10}
11?>
12--FILE--
13<?php
14/* Prototype  : imagecolorallocate(resource im, int red, int green, int blue)
15 * Description: Allocate a color for an image
16 * Source code: ext/gd/gd.c
17 */
18
19echo "*** Testing imagecolorallocate() : usage variations ***\n";
20
21$im = imagecreatetruecolor(200, 200);
22$red = 10;
23$blue = 10;
24
25$fp = tmpfile();
26
27//get an unset variable
28$unset_var = 10;
29unset ($unset_var);
30// define some classes
31class classWithToString
32{
33        public function __toString() {
34                return "Class A object";
35        }
36}
37
38
39class classWithoutToString
40{
41}
42
43// heredoc string
44$heredoc = <<<EOT
45hello world
46EOT;
47
48// add arrays
49$index_array = array (1, 2, 3);
50$assoc_array = array ('one' => 1, 'two' => 2);
51
52//array of values to iterate over
53$values = array(
54
55      // float data
56      'float 10.5' => 10.5,
57      'float -10.5' => -10.5,
58      'float 10.1234567e5' => 10.1234567e5,
59      'float 10.7654321E-5' => 10.7654321E-5,
60      'float .5' => .5,
61
62      // array data
63      'empty array' => array(),
64      'int indexed array' => $index_array,
65      'associative array' => $assoc_array,
66	  'nested arrays' => array('foo', $index_array, $assoc_array),
67
68      // null data
69	  'uppercase NULL' => NULL,
70      'lowercase null' => null,
71
72      // boolean data
73      'lowercase true' => true,
74      'lowercase false' =>false,
75      'uppercase TRUE' =>TRUE,
76      'uppercase FALSE' =>FALSE,
77
78      // empty data
79      'empty string DQ' => "",
80      'empty string SQ' => '',
81
82      // string data
83      'string DQ' => "string",
84      'string SQ' => 'string',
85      'mixed case string' => "sTrInG",
86      'heredoc' => $heredoc,
87
88      // object data
89      'instance of classWithToString' => new classWithToString(),
90      'instance of classWithoutToString' => new classWithoutToString(),
91
92      // undefined data
93      'undefined var' => @$undefined_var,
94
95      // unset data
96      'unset var' => @$unset_var,
97
98      //resource
99      "file resource" => $fp
100);
101// loop through each element of the array for red
102foreach($values as $key => $value) {
103      echo "\n--$key--\n";
104      var_dump( imagecolorallocate($im, $red, $value, $blue) );
105};
106?>
107===DONE===
108--EXPECTF--
109*** Testing imagecolorallocate() : usage variations ***
110
111--float 10.5--
112int(657930)
113
114--float -10.5--
115int(652810)
116
117--float 10.1234567e5--
118int(259815690)
119
120--float 10.7654321E-5--
121int(655370)
122
123--float .5--
124int(655370)
125
126--empty array--
127
128Warning: imagecolorallocate() expects parameter 3 to be integer, array given in %s on line %d
129NULL
130
131--int indexed array--
132
133Warning: imagecolorallocate() expects parameter 3 to be integer, array given in %s on line %d
134NULL
135
136--associative array--
137
138Warning: imagecolorallocate() expects parameter 3 to be integer, array given in %s on line %d
139NULL
140
141--nested arrays--
142
143Warning: imagecolorallocate() expects parameter 3 to be integer, array given in %s on line %d
144NULL
145
146--uppercase NULL--
147int(655370)
148
149--lowercase null--
150int(655370)
151
152--lowercase true--
153int(655626)
154
155--lowercase false--
156int(655370)
157
158--uppercase TRUE--
159int(655626)
160
161--uppercase FALSE--
162int(655370)
163
164--empty string DQ--
165
166Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
167NULL
168
169--empty string SQ--
170
171Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
172NULL
173
174--string DQ--
175
176Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
177NULL
178
179--string SQ--
180
181Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
182NULL
183
184--mixed case string--
185
186Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
187NULL
188
189--heredoc--
190
191Warning: imagecolorallocate() expects parameter 3 to be integer, string given in %s on line %d
192NULL
193
194--instance of classWithToString--
195
196Warning: imagecolorallocate() expects parameter 3 to be integer, object given in %s on line %d
197NULL
198
199--instance of classWithoutToString--
200
201Warning: imagecolorallocate() expects parameter 3 to be integer, object given in %s on line %d
202NULL
203
204--undefined var--
205int(655370)
206
207--unset var--
208int(655370)
209
210--file resource--
211
212Warning: imagecolorallocate() expects parameter 3 to be integer, resource given in %s on line %d
213NULL
214===DONE===
215