1--TEST--
2Test abs() function : usage variations - different data types as $number arg
3--FILE--
4<?php
5/* Prototype  : number abs  ( mixed $number  )
6 * Description: Returns the absolute value of number.
7 * Source code: ext/standard/math.c
8 */
9
10/*
11 * Pass different data types as $number argument to abs() to test behaviour
12 */
13
14echo "*** Testing abs() : usage variations ***\n";
15
16//get an unset variable
17$unset_var = 10;
18unset ($unset_var);
19
20// get a class
21class classA
22{
23  public function __toString() {
24    return "abs";
25  }
26}
27
28// heredoc string
29$heredoc = <<<EOT
30abs
31EOT;
32
33// get a resource variable
34$fp = fopen(__FILE__, "r");
35
36// unexpected values to be passed to $number argument
37$inputs = array(
38
39       // null data
40/*10*/ NULL,
41       null,
42
43       // boolean data
44/*12*/ true,
45       false,
46       TRUE,
47       FALSE,
48
49       // empty data
50/*16*/ "",
51       '',
52       array(),
53
54       // string data
55/*19*/ "abs",
56       'abs',
57       $heredoc,
58
59       // object data
60/*22*/ new classA(),
61
62       // undefined data
63/*23*/ @$undefined_var,
64
65       // unset data
66/*24*/ @$unset_var,
67
68       // resource variable
69/*25*/ $fp
70);
71
72// loop through each element of $inputs to check the behavior of abs()
73$iterator = 1;
74foreach($inputs as $input) {
75	echo "\n-- Iteration $iterator --\n";
76	var_dump(abs($input) );
77	$iterator++;
78};
79
80fclose($fp);
81?>
82===Done===
83--EXPECTF--
84*** Testing abs() : usage variations ***
85
86-- Iteration 1 --
87int(0)
88
89-- Iteration 2 --
90int(0)
91
92-- Iteration 3 --
93int(1)
94
95-- Iteration 4 --
96int(0)
97
98-- Iteration 5 --
99int(1)
100
101-- Iteration 6 --
102int(0)
103
104-- Iteration 7 --
105int(0)
106
107-- Iteration 8 --
108int(0)
109
110-- Iteration 9 --
111bool(false)
112
113-- Iteration 10 --
114int(0)
115
116-- Iteration 11 --
117int(0)
118
119-- Iteration 12 --
120int(0)
121
122-- Iteration 13 --
123
124Notice: Object of class classA could not be converted to int in %s on line %d
125int(1)
126
127-- Iteration 14 --
128int(0)
129
130-- Iteration 15 --
131int(0)
132
133-- Iteration 16 --
134int(%d)
135===Done===
136