cvs: php4(PHP_4_0_7) /tests quicktester.inc
| From: | Rasmus Lerdorf | 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";