summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJeroen van Wolffelaar <jeroen@php.net>2001-10-05 23:37:08 +0000
committerJeroen van Wolffelaar <jeroen@php.net>2001-10-05 23:37:08 +0000
commita1c2b86701b140e1fcfe47bcbf6dd7cd0c593bec (patch)
tree023252e68e3d299570de7c1427b3e0c30b72f289 /tests
parent91880600c790685537ecf1175042628e02f97162 (diff)
downloadphp-git-a1c2b86701b140e1fcfe47bcbf6dd7cd0c593bec.tar.gz
Fix the pow-test, it now succeeds on my machine
Diffstat (limited to 'tests')
-rw-r--r--tests/quicktester.inc74
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";