summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2001-11-13 12:57:26 +0000
committerRasmus Lerdorf <rasmus@php.net>2001-11-13 12:57:26 +0000
commitbca8ddd0836e7c9706e7456fd230832293d224e5 (patch)
tree3fd2fcaa4b1029d2af5fc28d277e11f24ddf55fa
parent6d47a2d60f3c04f8577ae00ee927cb034916e858 (diff)
downloadphp-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.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";