[ Index ]
 

Code source de PHP PEAR 1.4.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/tests/Config/test/ -> phpt_test.php.inc (source)

   1  <?php
   2  @include_once 'Text/Diff.php';
   3  @include_once 'Text/Diff/Renderer.php';
   4  @include_once 'Text/Diff/Renderer/unified.php';
   5  require_once  'PEAR/ErrorStack.php';
   6  require_once  'PEAR.php';
   7  class PEAR_PHPTest
   8  {
   9      var $_diffonly;
  10      var $_errors;
  11      function PEAR_PHPTest($diffonly = false)
  12      {
  13          $this->_diffonly = $diffonly;
  14          $this->_errors = array();
  15          PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'pearerrorCallback'));
  16          PEAR_ErrorStack::setDefaultCallback(array(&$this, 'pearerrorstackCallback'));
  17      }
  18  
  19      function pearerrorCallback($err)
  20      {
  21          PEAR_ErrorStack::staticPush('PEAR_Error', -1, 'error', array('obj' => $err),
  22              $err->getMessage());
  23      }
  24  
  25      function pearerrorstackCallback($err)
  26      {
  27          $this->_errors[] = $err;
  28      }
  29  
  30      function assertPEARError($err, $message)
  31      {
  32          if (is_a($err, 'PEAR_Error')) {
  33              return true;
  34          }
  35          $this->_failTest(debug_backtrace(), $message);
  36          echo "Not a PEAR_Error\n";
  37          return false;
  38      }
  39  
  40      function assertNoErrors($message, $trace = null)
  41      {
  42          if (count($this->_errors) == 0) {
  43              return true;
  44          }
  45          if ($trace === null) {
  46              $trace = debug_backtrace();
  47          }
  48          $this->_failTest($trace, $message);
  49          foreach ($this->_errors as $err) {
  50              if ($err['package'] == 'PEAR_Error') {
  51                  echo "Unexpected PEAR_Error:\n";
  52                  echo 'message "' . $err['message'] . "\"\n";
  53              } else {
  54                  echo "Unexpected PEAR_ErrorStack error:\n";
  55                  echo 'package "' . $err['package'] . "\"\n";
  56                  echo 'message "' . $err['message'] . "\"\n";
  57              }
  58          }
  59          $this->_errors = array();
  60          return false;
  61      }
  62  
  63      function assertErrors($errors, $message, $trace = null)
  64      {
  65          if (!count($this->_errors)) {
  66              if ($trace === null) {
  67                  $trace = debug_backtrace();
  68              }
  69              $this->_failTest($trace, $message);
  70              echo "No errors caught, but errors were expected\n";
  71              return false;
  72          }
  73          if (!isset($errors[0])) {
  74              $errors = array($errors);
  75          }
  76          $failed = false;
  77          foreach ($errors as $err) {
  78              $found = false;
  79              foreach ($this->_errors as $i => $caughterror) {
  80                  if ($caughterror['package'] == $err['package']) {
  81                      if ($caughterror['message'] == $err['message']) {
  82                          $found = true;
  83                          break;
  84                      }
  85                  }
  86              }
  87              if ($found) {
  88                  unset($this->_errors[$i]);
  89                  continue;
  90              }
  91              if (!$failed) {
  92                  if ($trace === null) {
  93                      $trace = debug_backtrace();
  94                  }
  95                  $failed = true;
  96                  $this->_failTest($trace, $message);
  97              }
  98              echo "Unthrown error:\n";
  99              if ($err['package'] == 'PEAR_Error') {
 100                  echo "PEAR_Error:\n";
 101              } else {
 102                  echo "error package: \"$err[package]\"\n";
 103              }
 104              echo "message: \"$err[message]\"\n";
 105          }
 106          if (count($this->_errors)) {
 107              if (!$failed) {
 108                  if ($trace === null) {
 109                      $trace = debug_backtrace();
 110                  }
 111                  $failed = true;
 112                  $this->_failTest($trace, $message);
 113              }
 114              foreach ($this->_errors as $err) {
 115                  echo "Unexpected error:\n";
 116                  if ($err['package'] == 'PEAR_Error') {
 117                      echo "PEAR_Error:\n";
 118                  } else {
 119                      echo "error package: \"$err[package]\"\n";
 120                  }
 121                  echo "message: \"$err[message]\"\n";
 122              }
 123          }
 124          $this->_errors = array();
 125          return !$failed;
 126      }
 127  
 128      function assertTrue($test, $message)
 129      {
 130          $this->assertNoErrors($message, debug_backtrace());
 131          if ($test === true) {
 132              return true;
 133          }
 134          $this->_failTest(debug_backtrace(), $message);
 135          echo "Unexpected non-true value: \n";
 136          var_export($test);
 137          echo "\n'$message'\n";
 138          return false;
 139      }
 140  
 141      function assertIsa($control, $test, $message)
 142      {
 143          $this->assertNoErrors($message, debug_backtrace());
 144          if (is_a($test, $control)) {
 145              return true;
 146          }
 147          $this->_failTest(debug_backtrace(), $message);
 148          echo "Unexpected non-$control object: \n";
 149          var_export($test);
 150          echo "\n'$message'\n";
 151          return false;
 152      }
 153  
 154      function assertNull($test, $message)
 155      {
 156          $this->assertNoErrors($message, debug_backtrace());
 157          if ($test === null) {
 158              return true;
 159          }
 160          $this->_failTest(debug_backtrace(), $message);
 161          echo "Unexpected non-null value: \n";
 162          var_export($test);
 163          echo "\n'$message'\n";
 164          return false;
 165      }
 166  
 167      function assertNotNull($test, $message)
 168      {
 169          $this->assertNoErrors($message, debug_backtrace());
 170          if ($test !== null) {
 171              return true;
 172          }
 173          $this->_failTest(debug_backtrace(), $message);
 174          echo "Unexpected null: \n";
 175          var_export($test);
 176          echo "\n'$message'\n";
 177          return false;
 178      }
 179  
 180      function assertSame($test, $test1, $message)
 181      {
 182          $this->assertNoErrors($message, debug_backtrace());
 183          if ($test === $test1) {
 184              return true;
 185          }
 186          $this->_failTest(debug_backtrace(), $message);
 187          echo "Unexpectedly two vars are not the same thing: \n";
 188          echo "\n'$message'\n";
 189          return false;
 190      }
 191  
 192      function assertNotSame($test, $test1, $message)
 193      {
 194          $this->assertNoErrors($message, debug_backtrace());
 195          if ($test !== $test1) {
 196              return true;
 197          }
 198          $this->_failTest(debug_backtrace(), $message);
 199          echo "Unexpectedly two vars are the same thing: \n";
 200          echo "\n'$message'\n";
 201          return false;
 202      }
 203  
 204      function assertFalse($test, $message)
 205      {
 206          $this->assertNoErrors($message, debug_backtrace());
 207          if ($test === false) {
 208              return true;
 209          }
 210          $this->_failTest(debug_backtrace(), $message);
 211          echo "Unexpected non-false value: \n";
 212          var_export($test);
 213          echo "\n'$message'\n";
 214          return false;
 215      }
 216  
 217      function assertNotTrue($test, $message)
 218      {
 219          $this->assertNoErrors($message, debug_backtrace());
 220          if (!$test) {
 221              return true;
 222          }
 223          $this->_failTest(debug_backtrace(), $message);
 224          echo "Unexpected loose true value: \n";
 225          var_export($test);
 226          echo "\n'$message'\n";
 227          return false;
 228      }
 229  
 230      function assertNotFalse($test, $message)
 231      {
 232          $this->assertNoErrors($message, debug_backtrace());
 233          if ($test) {
 234              return true;
 235          }
 236          $this->_failTest(debug_backtrace(), $message);
 237          echo "Unexpected loose false value: \n";
 238          var_export($test);
 239          echo "\n'$message'\n";
 240          return false;
 241      }
 242  
 243      function assertEquals($control, $test, $message)
 244      {
 245          $this->assertNoErrors($message, debug_backtrace());
 246          if (str_replace(array("\r", "\n"), array('', ''),
 247              var_export($control, true)) != str_replace(array("\r", "\n"), array('', ''),
 248              var_export($test, true))) {
 249              $this->_failTest(debug_backtrace(), $message);
 250              if (class_exists('Text_Diff')) {
 251                  echo "Diff of expecting/received:\n";
 252                  $diff = &new Text_Diff(
 253                      explode("\n", var_export($control, true)),
 254                      explode("\n", var_export($test, true)));
 255  
 256                  // Output the diff in unified format.
 257                  $renderer = &new Text_Diff_Renderer_unified();
 258                  echo $renderer->render($diff);
 259                  if ($this->_diffonly) {
 260                      return false;
 261                  }
 262              }
 263              echo "Expecting:\n";
 264              var_export($control);
 265              echo "\nReceived:\n";
 266              var_export($test);
 267              return false;
 268          }
 269          return true;
 270      }
 271  
 272      function assertFileExists($fname, $message)
 273      {
 274          $this->assertNoErrors($message, debug_backtrace());
 275          if (!@file_exists($fname)) {
 276              $this->_failTest(debug_backtrace(), $message);
 277              echo "File '$fname' does not exist, and should\n";
 278              return false;
 279          }
 280          return true;
 281      }
 282  
 283      function assertFileNotExists($fname, $message)
 284      {
 285          $this->assertNoErrors($message, debug_backtrace());
 286          if (@file_exists($fname)) {
 287              $this->_failTest(debug_backtrace(), $message);
 288              echo "File '$fname' exists, and should not\n";
 289              return false;
 290          }
 291          return true;
 292      }
 293  
 294      function assertRegEquals($dump, &$reg, $message)
 295      {
 296          $actualdump = var_export(trim($this->dumpReg($reg)), true);
 297          $testdump = var_export(trim($dump), true);
 298          return $this->assertEquals($testdump, $actualdump, $message);
 299      }
 300  
 301      function assertPackageInfoEquals($control, $test, $message)
 302      {
 303          $this->assertNoErrors($message, debug_backtrace());
 304          if (isset($control[0])) {
 305              if (!isset($test[0]) || (count($control) != count($test))) {
 306                  echo "Invalid packageInfo\n";
 307                  $ret = $this->assertEquals($control, $test, $message);
 308              }
 309              $ret = true;
 310              foreach ($control as $i => $packageinfo) {
 311                  $ret = $ret &&
 312                      $this->assertPackageInfoEquals($packageinfo, $test[$i], $message . $i);
 313              }
 314              return $ret;
 315          }
 316          if (isset($control['_lastmodified'])) {
 317              if (!isset($test['_lastmodified'])) {
 318                  echo "_lastmodified is not set in packageInfo() output\n";
 319                  $this->_failTest(debug_backtrace(), $message);
 320                  return false;
 321              }
 322          }
 323          $savecontrol = $control;
 324          $savetest = $test;
 325          unset($control['_lastmodified']);
 326          unset($test['_lastmodified']);
 327          if (var_export($control, true) != var_export($test, true)) {
 328              $this->_failTest(debug_backtrace(), $message);
 329              if (class_exists('Text_Diff')) {
 330                  echo "Diff of expecting/received:\n";
 331                  $diff = &new Text_Diff(
 332                      explode("\n", var_export($control, true)),
 333                      explode("\n", var_export($test, true)));
 334  
 335                  // Output the diff in unified format.
 336                  $renderer = &new Text_Diff_Renderer_unified();
 337                  echo $renderer->render($diff);
 338                  if ($this->_diffonly) {
 339                      return false;
 340                  }
 341              }
 342              echo "Expecting:\n";
 343              var_export($savecontrol);
 344              echo "\nReceived:\n";
 345              var_export($savetest);
 346              return false;
 347          }
 348          return true;
 349      }
 350  
 351      function dumpReg(&$reg)
 352      {
 353          ob_start();
 354          print "dumping registry...\n";
 355          $infos = $reg->packageInfo(null, null, null);
 356          foreach ($infos as $channel => $info) {
 357              echo "channel $channel:\n";
 358              foreach ($info as $pkg) {
 359                  print $pkg["name"] . ":";
 360                  unset($pkg["name"]);
 361                  foreach ($pkg as $k => $v) {
 362                      if ($k == '_lastmodified') {
 363                          print " _lastmodified is set";
 364                          continue;
 365                      }
 366                      if (is_array($v) && $k == 'filelist') {
 367                          print " $k=array(";
 368                          $i = 0;
 369                          foreach ($v as $k2 => $v2) {
 370                              if ($i++ > 0) print ",";
 371                              print "{$k2}[";
 372                              $j = 0;
 373                              foreach ($v2 as $k3 => $v3) {
 374                                  if ($j++ > 0) print ",";
 375                                  print "$k3=$v3";
 376                              }
 377                              print "]";
 378                          }
 379                          print ")";
 380                      } else {
 381                          print " $k=\"$v\"";
 382                      }
 383                  }
 384                  print "\n";
 385              }
 386          }
 387          print "dump done\n";
 388          $ret = ob_get_contents();
 389          ob_end_clean();
 390          return $ret;
 391      }
 392  
 393      function _failTest($trace, $message)
 394      {
 395          echo 'Test Failure: "' . $message  . "\"\n in " . $trace[0]['file'] . ' line ' .
 396              $trace[0]['line'] . "\n";
 397      }
 398  
 399      function showAll()
 400      {
 401          $this->_diffonly = false;
 402      }
 403  }
 404  ?>


Généré le : Sun Feb 25 14:08:00 2007 par Balluche grâce à PHPXref 0.7