diff options
author | Jeroen van Wolffelaar <jeroen@php.net> | 2001-10-05 23:37:08 +0000 |
---|---|---|
committer | Jeroen van Wolffelaar <jeroen@php.net> | 2001-10-05 23:37:08 +0000 |
commit | a1c2b86701b140e1fcfe47bcbf6dd7cd0c593bec (patch) | |
tree | 023252e68e3d299570de7c1427b3e0c30b72f289 /tests | |
parent | 91880600c790685537ecf1175042628e02f97162 (diff) | |
download | php-git-a1c2b86701b140e1fcfe47bcbf6dd7cd0c593bec.tar.gz |
Fix the pow-test, it now succeeds on my machine
Diffstat (limited to 'tests')
-rw-r--r-- | tests/quicktester.inc | 74 |
1 files changed, 57 insertions, 17 deletions
diff --git a/tests/quicktester.inc b/tests/quicktester.inc index 08e3c0a40f..0ca8bbab08 100644 --- a/tests/quicktester.inc +++ b/tests/quicktester.inc @@ -15,21 +15,61 @@ TESTS; Remember to NOT put a trailing ; after a line! */ - error_reporting(E_ALL); - $tests = explode("\n",$tests); - $success = TRUE; - foreach ($tests as $test) - { - $res = eval("return ($test);"); - $success = $success && $res; - if (!$res) - { - echo "\nAssert failed:\n"; - echo "$test\n"; - list($left,$right) = explode('===',$test); - echo "Left: ";var_dump(eval("return ($left );")); - echo "Right: ";var_dump(eval("return ($right);")); - } - } - if ($success) echo "OK"; +error_reporting(E_ALL); +$tests = explode("\n",$tests); +$success = TRUE; +foreach ($tests as $n=>$test) +{ + // ignore empty lines + if (!$test) continue; + + // warn for trailing ; + if (substr(trim($test), -1, 1) === ';') { + echo "WARNING: trailing ';' found in test ".($n+1)."\n"; + exit; + } + + // try for operators + $operators = array('===', '~=='); + $operator = NULL; + foreach ($operators as $a_operator) { + if (strpos($test, $a_operator)!== FALSE) { + $operator = $a_operator; + list($left,$right) = explode($operator, $test); + break; + } + } + if (!$operator) { + echo "WARNING: unknown operator in '$test' (1)\n"; + exit; + } + + $left = eval("return ($left );"); + $right = eval("return ($right);"); + switch (@$operator) { + case '===': // exact match + $result = $left === $right; + break; + case '~==': // may differ after 12th significant number + if ( !is_float($left ) && !is_int($left ) + || !is_float($right) && !is_int($right)) { + $result = FALSE; + break; + } + $result = abs(($left-$right) / $left) < 1e-12; + break; + default: + echo "WARNING: unknown operator in '$test' (2)\n"; + exit; + } + + $success = $success && $result; + if (!$result) { + echo "\nAssert failed:\n"; + echo "$test\n"; + echo "Left: ";var_dump($left ); + echo "Right: ";var_dump($right); + } +} +if ($success) echo "OK"; |