File: 046.phpt

package info (click to toggle)
php5 5.6.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 150,376 kB
  • sloc: ansic: 727,510; php: 21,966; sh: 12,356; cpp: 8,763; xml: 6,105; yacc: 1,551; exp: 1,514; makefile: 1,461; pascal: 1,048; awk: 538; perl: 315; sql: 22
file content (49 lines) | stat: -rw-r--r-- 1,296 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
--TEST--
Integer overflow
--SKIPIF--
<?php if (!extension_loaded("filter")) die("skip"); ?>
--FILE--
<?php
$max = sprintf("%d", PHP_INT_MAX);
switch($max) {
case "2147483647": /* 32-bit systems */
	$min = "-2147483648";
	$overflow = "2147483648";
	$underflow = "-2147483649";
	break;
case "9223372036854775807": /* 64-bit systems */
	$min = "-9223372036854775808";
	$overflow = "9223372036854775808";
	$underflow = "-9223372036854775809";
	break;
default:
	die("failed: unknown value for PHP_MAX_INT");
	break;
}

function test_validation($val, $msg) {
	$f = filter_var($val, FILTER_VALIDATE_INT);
	echo "$msg filtered: "; var_dump($f); // filtered value (or false)
	echo "$msg is_long: "; var_dump(is_long($f)); // test validation
	echo "$msg equal: "; var_dump($val == $f); // test equality of result
}

// PHP_INT_MAX
test_validation($max, "max");
test_validation($overflow, "overflow");
test_validation($min, "min");
test_validation($underflow, "underflow");
?>
--EXPECTF--
max filtered: int(%d)
max is_long: bool(true)
max equal: bool(true)
overflow filtered: bool(false)
overflow is_long: bool(false)
overflow equal: bool(false)
min filtered: int(-%d)
min is_long: bool(true)
min equal: bool(true)
underflow filtered: bool(false)
underflow is_long: bool(false)
underflow equal: bool(false)