cvs: php4(PHP_4_0_7) /tests quicktester.inc

From: Date: Tue, 13 Nov 2001 12:57:26 +0000
Subject: cvs: php4(PHP_4_0_7) /tests quicktester.inc
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-8194@lists.php.net to get a copy of this message
rasmus Tue Nov 13 07:57:26 2001 EDT Modified files: (Branch: PHP_4_0_7) /php4/tests quicktester.inc Log: 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. Index: php4/tests/quicktester.inc diff -u php4/tests/quicktester.inc:1.1 php4/tests/quicktester.inc:1.1.2.1 --- php4/tests/quicktester.inc:1.1 Sun Aug 5 14:38:47 2001 +++ php4/tests/quicktester.inc Tue Nov 13 07:57:26 2001 @@ -15,21 +15,61 @@ 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";

« previous php.cvs (#8194) next »