Annotation of embedaddon/php/tests/quicktester.inc, revision 1.1.1.1
1.1 misho 1: <?php
2: /*
3: Helper for simple tests to check return-value. Usage:
4:
5: $tests = <<<TESTS
6: expected_return_value === expression
7: 2 === 1+1
8: 4 === 2*2
9: FALSE === @ fopen('non_existent_file')
10: TESTS;
11: include( 'tests/quicktester.inc' );
12:
13: Expect: OK
14:
15: Remember to NOT put a trailing ; after a line!
16:
17: */
18: error_reporting(E_ALL);
19: $tests = explode("\n",$tests);
20: $success = TRUE;
21: foreach ($tests as $n=>$test)
22: {
23: // ignore empty lines
24: if (!$test) continue;
25:
26: // warn for trailing ;
27: if (substr(trim($test), -1, 1) === ';') {
28: echo "WARNING: trailing ';' found in test ".($n+1)."\n";
29: exit;
30: }
31:
32: // try for operators
33: $operators = array('===', '~==');
34: $operator = NULL;
35: foreach ($operators as $a_operator) {
36: if (strpos($test, $a_operator)!== FALSE) {
37: $operator = $a_operator;
38: list($left,$right) = explode($operator, $test);
39: break;
40: }
41: }
42: if (!$operator) {
43: echo "WARNING: unknown operator in '$test' (1)\n";
44: exit;
45: }
46:
47: $left = eval("return ($left );");
48: $right = eval("return ($right);");
49: switch (@$operator) {
50: case '===': // exact match
51: $result = $left === $right;
52: break;
53: case '~==': // may differ after 12th significant number
54: if ( !is_float($left ) && !is_int($left )
55: || !is_float($right) && !is_int($right)) {
56: $result = FALSE;
57: break;
58: }
59: $result = abs(($left-$right) / $left) < 1e-12;
60: break;
61: default:
62: echo "WARNING: unknown operator in '$test' (2)\n";
63: exit;
64: }
65:
66: $success = $success && $result;
67: if (!$result) {
68: echo "\nAssert failed:\n";
69: echo "$test\n";
70: echo "Left: ";var_dump($left );
71: echo "Right: ";var_dump($right);
72: }
73: }
74: if ($success) echo "OK";
75:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>