Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tag: php-5.1.6
Fetching contributors…

Cannot retrieve contributors at this time

file 75 lines (66 sloc) 1.689 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
<?php
 /*
  Helper for simple tests to check return-value. Usage:

  $tests = <<<TESTS
   expected_return_value === expression
   2 === 1+1
   4 === 2*2
   FALSE === @ fopen('non_existent_file')
TESTS;
  include( 'tests/quicktester.inc' );

  Expect: OK

  Remember to NOT put a trailing ; after a line!

 */
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";

Something went wrong with that request. Please try again.