1--TEST--
2Test fmod() function : usage variations - different data types as $y argument
3--FILE--
4<?php
5/* Prototype  : float fmod  ( float $x  , float $y  )
6 * Description: Returns the floating point remainder (modulo) of the division of the arguments.
7 * Source code: ext/standard/math.c
8 */
9
10echo "*** Testing fmod() : usage variations ***\n";
11
12//get an unset variable
13$unset_var = 10;
14unset ($unset_var);
15
16// heredoc string
17$heredoc = <<<EOT
18abc
19xyz
20EOT;
21
22// get a class
23class classA
24{
25}
26
27// get a resource variable
28$fp = fopen(__FILE__, "r");
29
30$inputs = array(
31       // int data
32/*1*/  0,
33       1,
34       12345,
35       -2345,
36       2147483647,
37
38       // float data
39/*6*/  10.5,
40       -10.5,
41       12.3456789000e10,
42       12.3456789000E-10,
43       .5,
44
45       // null data
46/*11*/ NULL,
47       null,
48
49       // boolean data
50/*13*/ true,
51       false,
52       TRUE,
53       FALSE,
54
55       // empty data
56/*17*/ "",
57       '',
58       array(),
59
60       // string data
61/*20*/ "abcxyz",
62       'abcxyz',
63       $heredoc,
64
65       // object data
66/*23*/ new classA(),
67
68       // undefined data
69/*24*/ @$undefined_var,
70
71       // unset data
72/*25*/ @$unset_var,
73
74       // resource variable
75/*26*/ $fp
76);
77
78// loop through each element of $inputs to check the behaviour of fmod()
79$iterator = 1;
80foreach($inputs as $input) {
81	echo "\n-- Iteration $iterator --\n";
82	var_dump(fmod(123456, $input));
83	$iterator++;
84};
85fclose($fp);
86?>
87===Done===
88--EXPECTF--
89*** Testing fmod() : usage variations ***
90
91-- Iteration 1 --
92float(NAN)
93
94-- Iteration 2 --
95float(0)
96
97-- Iteration 3 --
98float(6)
99
100-- Iteration 4 --
101float(1516)
102
103-- Iteration 5 --
104float(123456)
105
106-- Iteration 6 --
107float(7.5)
108
109-- Iteration 7 --
110float(7.5)
111
112-- Iteration 8 --
113float(123456)
114
115-- Iteration 9 --
116float(2.3605615109341E-10)
117
118-- Iteration 10 --
119float(0)
120
121-- Iteration 11 --
122float(NAN)
123
124-- Iteration 12 --
125float(NAN)
126
127-- Iteration 13 --
128float(0)
129
130-- Iteration 14 --
131float(NAN)
132
133-- Iteration 15 --
134float(0)
135
136-- Iteration 16 --
137float(NAN)
138
139-- Iteration 17 --
140
141Warning: fmod() expects parameter 2 to be float, string given in %s on line %d
142NULL
143
144-- Iteration 18 --
145
146Warning: fmod() expects parameter 2 to be float, string given in %s on line %d
147NULL
148
149-- Iteration 19 --
150
151Warning: fmod() expects parameter 2 to be float, array given in %s on line %d
152NULL
153
154-- Iteration 20 --
155
156Warning: fmod() expects parameter 2 to be float, string given in %s on line %d
157NULL
158
159-- Iteration 21 --
160
161Warning: fmod() expects parameter 2 to be float, string given in %s on line %d
162NULL
163
164-- Iteration 22 --
165
166Warning: fmod() expects parameter 2 to be float, string given in %s on line %d
167NULL
168
169-- Iteration 23 --
170
171Warning: fmod() expects parameter 2 to be float, object given in %s on line %d
172NULL
173
174-- Iteration 24 --
175float(NAN)
176
177-- Iteration 25 --
178float(NAN)
179
180-- Iteration 26 --
181
182Warning: fmod() expects parameter 2 to be float, resource given in %s on line %d
183NULL
184===Done===
185