global statement removal: hphp/test [7/x]
[hiphop-php.git] / hphp / test / quick / float-overflow.php
blobe84ba4dc7f4b7c8f51f0dfe76aab7685be551f1b
1 <?php
3 class C {
4 public $max = PHP_INT_MAX;
7 function main() {
8 $add = function($a,$b) { return $a + $b; };
9 $sub = function($a,$b) { return $a - $b; };
10 $mul = function($a,$b) { return $a * $b; };
12 $max = PHP_INT_MAX;
13 $min = 1 << 63;
15 // some initial cases for the simplifier
16 var_dump($max + 1);
17 var_dump($min - 1);
18 var_dump($max * 5);
20 $ops = array(
21 // initial sanity checks for no overflow
22 array($add, 3, 5),
23 array($sub, 3, 5),
24 array($mul, 7, 4),
26 // check runtime operators on just ints
27 array($add, $max, 1),
28 array($add, $min, -1),
30 array($sub, $min, 1),
31 array($sub, $max, -1),
33 array($mul, $max / 2, 3),
34 array($mul, $min, 2),
35 array($mul, $max, -2),
36 array($mul, $min, -3),
38 // check numeric strings
39 array($add, "$max", 1),
40 array($add, $max, '1'),
41 array($add, "$max", '1'),
43 // check lexer
44 array($add, 987654321987654321987654321, 1),
47 foreach ($ops as list($op, $lhs, $rhs)) {
48 $res = $op($lhs, $rhs);
49 var_dump($res);
52 $unary = array($min, $max, -4, 0, 5, "12", 5.2, "1.5", "abc", "", null);
54 // inc/dec
55 foreach ($unary as $val) {
56 $x = $val;
57 var_dump(++$x);
58 var_dump($x);
60 $x = $val;
61 var_dump($x++);
62 var_dump($x);
64 $x = $val;
65 var_dump(--$x);
66 var_dump($x);
68 $x = $val;
69 var_dump($x--);
70 var_dump($x);
73 // arrays
74 $array = $unary;
75 for ($i = 0; $i < count($array); ++$i) {
76 var_dump($array[$i]);
77 var_dump($array[$i]++);
78 var_dump($array[$i]);
81 $array = $unary;
82 for ($i = 0; $i < count($array); ++$i) {
83 var_dump($array[$i]);
84 var_dump(++$array[$i]);
85 var_dump($array[$i]);
88 $array = $unary;
89 for ($i = 0; $i < count($array); ++$i) {
90 var_dump($array[$i]);
91 var_dump($array[$i]--);
92 var_dump($array[$i]);
95 $array = $unary;
96 for ($i = 0; $i < count($array); ++$i) {
97 var_dump($array[$i]);
98 var_dump(--$array[$i]);
99 var_dump($array[$i]);
102 // properties
104 $c = new C;
105 var_dump($c->max);
106 var_dump($c->max++);
107 var_dump($c->max);
109 $c = new C;
110 var_dump($c->max);
111 var_dump(++$c->max);
112 var_dump($c->max);
114 $c = new C;
115 var_dump($c->max);
116 var_dump($c->max--);
117 var_dump($c->max);
119 $c = new C;
120 var_dump($c->max);
121 var_dump(--$c->max);
122 var_dump($c->max);
125 main();