diff options
| author | Rasmus Lerdorf <rasmus@php.net> | 2001-11-13 12:57:26 +0000 |
|---|---|---|
| committer | Rasmus Lerdorf <rasmus@php.net> | 2001-11-13 12:57:26 +0000 |
| commit | bca8ddd0836e7c9706e7456fd230832293d224e5 (patch) | |
| tree | 3fd2fcaa4b1029d2af5fc28d277e11f24ddf55fa | |
| parent | 6d47a2d60f3c04f8577ae00ee927cb034916e858 (diff) | |
| download | php-git-bca8ddd0836e7c9706e7456fd230832293d224e5.tar.gz | |
Let's just use the quicktester from HEAD since it seems to work and the
one in this branch is quite broken. Still plenty of failing tests we need
to work through here.
| -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"; |
