1--TEST--
2Test money_format() function :  usage variations - test values for $number argument
3--SKIPIF--
4<?php
5	if (!function_exists('money_format')) {
6		die("SKIP money_format - not supported\n");
7	}
8?>
9--FILE--
10<?php
11/* Prototype  : string money_format  ( string $format  , float $number  )
12 * Description: Formats a number as a currency string
13 * Source code: ext/standard/string.c
14*/
15
16// ===========================================================================================
17// = We do not test for exact return-values, as those might be different between OS-versions =
18// ===========================================================================================
19
20echo "*** Testing money_format() function: with unexpected inputs for 'number' argument ***\n";
21
22//get an unset variable
23$unset_var = '  string_val  ';
24unset($unset_var);
25
26//defining a couple of sample classes
27class class_no_tostring  {
28}
29
30class class_with_tostring  {
31  public function __toString() {
32    return "  sample object  ";
33  }
34}
35
36
37//getting the resource
38$file_handle = fopen(__FILE__, "r");
39
40// array with different values for $number
41$numbers =  array (
42
43		  // integer values
44/*1*/	  0,
45		  1,
46		  255,
47		  256,
48		  2147483647,
49		  -2147483648,
50
51		  // float values
52/*7*/	  10.5,
53		  -20.5,
54		  10.1234567e10,
55
56		  // array values
57/*10*/	  array(),
58		  array(0),
59		  array(1, 2),
60
61		  // boolean values
62/*13*/	  true,
63		  false,
64		  TRUE,
65		  FALSE,
66
67		  // null values
68/*17*/	  NULL,
69		  null,
70
71		  // string values
72/*19*/	  "abcd",
73		  'abcd',
74		  "0x12f",
75		  "%=*!14#8.2nabcd",
76
77		  // objects
78/*23*/	  new class_no_tostring(),
79		  new class_with_tostring(),
80
81		  // resource
82/*25*/	  $file_handle,
83
84		  // undefined variable
85/*26*/	  @$undefined_var,
86
87		  // unset variable
88/*27*/	  @$unset_var
89);
90
91// loop through with each element of the $numbers array to test money_format() function
92$count = 1;
93$format = '%14#8.2i';
94
95foreach($numbers as $number) {
96  echo "-- Iteration $count --\n";
97  echo gettype(money_format($format, $number))."\n";
98  $count ++;
99}
100
101// close the file handle
102fclose($file_handle);
103
104?>
105===Done===
106--EXPECTF--
107*** Testing money_format() function: with unexpected inputs for 'number' argument ***
108-- Iteration 1 --
109string
110-- Iteration 2 --
111string
112-- Iteration 3 --
113string
114-- Iteration 4 --
115string
116-- Iteration 5 --
117string
118-- Iteration 6 --
119string
120-- Iteration 7 --
121string
122-- Iteration 8 --
123string
124-- Iteration 9 --
125string
126-- Iteration 10 --
127
128Warning: money_format() expects parameter 2 to be double, array given in %s on line %d
129NULL
130-- Iteration 11 --
131
132Warning: money_format() expects parameter 2 to be double, array given in %s on line %d
133NULL
134-- Iteration 12 --
135
136Warning: money_format() expects parameter 2 to be double, array given in %s on line %d
137NULL
138-- Iteration 13 --
139string
140-- Iteration 14 --
141string
142-- Iteration 15 --
143string
144-- Iteration 16 --
145string
146-- Iteration 17 --
147string
148-- Iteration 18 --
149string
150-- Iteration 19 --
151
152Warning: money_format() expects parameter 2 to be double, string given in %s on line %d
153NULL
154-- Iteration 20 --
155
156Warning: money_format() expects parameter 2 to be double, string given in %s on line %d
157NULL
158-- Iteration 21 --
159string
160-- Iteration 22 --
161
162Warning: money_format() expects parameter 2 to be double, string given in %s on line %d
163NULL
164-- Iteration 23 --
165
166Warning: money_format() expects parameter 2 to be double, object given in %s on line %d
167NULL
168-- Iteration 24 --
169
170Warning: money_format() expects parameter 2 to be double, object given in %s on line %d
171NULL
172-- Iteration 25 --
173
174Warning: money_format() expects parameter 2 to be double, resource given in %s on line %d
175NULL
176-- Iteration 26 --
177string
178-- Iteration 27 --
179string
180===Done===
181