|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00012 require_once(dirname(__FILE__) . '/test_case.php'); 00013 require_once(dirname(__FILE__) . '/dumper.php'); 00023 class UnitTestCase extends SimpleTestCase { 00024 00032 function UnitTestCase($label = false) { 00033 if (! $label) { 00034 $label = get_class($this); 00035 } 00036 $this->SimpleTestCase($label); 00037 } 00038 00048 function assertTrue($result, $message = false) { 00049 return $this->assert(new TrueExpectation(), $result, $message); 00050 } 00051 00062 function assertFalse($result, $message = '%s') { 00063 return $this->assert(new FalseExpectation(), $result, $message); 00064 } 00065 00073 function assertNull($value, $message = '%s') { 00074 $dumper = new SimpleDumper(); 00075 $message = sprintf( 00076 $message, 00077 '[' . $dumper->describeValue($value) . '] should be null'); 00078 return $this->assertTrue(! isset($value), $message); 00079 } 00080 00088 function assertNotNull($value, $message = '%s') { 00089 $dumper = new SimpleDumper(); 00090 $message = sprintf( 00091 $message, 00092 '[' . $dumper->describeValue($value) . '] should not be null'); 00093 return $this->assertTrue(isset($value), $message); 00094 } 00095 00106 function assertIsA($object, $type, $message = '%s') { 00107 return $this->assert( 00108 new IsAExpectation($type), 00109 $object, 00110 $message); 00111 } 00112 00123 function assertNotA($object, $type, $message = '%s') { 00124 return $this->assert( 00125 new NotAExpectation($type), 00126 $object, 00127 $message); 00128 } 00129 00139 function assertEqual($first, $second, $message = '%s') { 00140 return $this->assert( 00141 new EqualExpectation($first), 00142 $second, 00143 $message); 00144 } 00145 00155 function assertNotEqual($first, $second, $message = '%s') { 00156 return $this->assert( 00157 new NotEqualExpectation($first), 00158 $second, 00159 $message); 00160 } 00161 00172 function assertWithinMargin($first, $second, $margin, $message = '%s') { 00173 return $this->assert( 00174 new WithinMarginExpectation($first, $margin), 00175 $second, 00176 $message); 00177 } 00178 00189 function assertOutsideMargin($first, $second, $margin, $message = '%s') { 00190 return $this->assert( 00191 new OutsideMarginExpectation($first, $margin), 00192 $second, 00193 $message); 00194 } 00195 00205 function assertIdentical($first, $second, $message = '%s') { 00206 return $this->assert( 00207 new IdenticalExpectation($first), 00208 $second, 00209 $message); 00210 } 00211 00221 function assertNotIdentical($first, $second, $message = '%s') { 00222 return $this->assert( 00223 new NotIdenticalExpectation($first), 00224 $second, 00225 $message); 00226 } 00227 00237 function assertReference(&$first, &$second, $message = '%s') { 00238 $dumper = new SimpleDumper(); 00239 $message = sprintf( 00240 $message, 00241 '[' . $dumper->describeValue($first) . 00242 '] and [' . $dumper->describeValue($second) . 00243 '] should reference the same object'); 00244 return $this->assertTrue( 00245 SimpleTestCompatibility::isReference($first, $second), 00246 $message); 00247 } 00248 00259 function assertClone(&$first, &$second, $message = '%s') { 00260 $dumper = new SimpleDumper(); 00261 $message = sprintf( 00262 $message, 00263 '[' . $dumper->describeValue($first) . 00264 '] and [' . $dumper->describeValue($second) . 00265 '] should not be the same object'); 00266 $identical = new IdenticalExpectation($first); 00267 return $this->assertTrue( 00268 $identical->test($second) && 00269 ! SimpleTestCompatibility::isReference($first, $second), 00270 $message); 00271 } 00272 00276 function assertCopy(&$first, &$second, $message = "%s") { 00277 $dumper = new SimpleDumper(); 00278 $message = sprintf( 00279 $message, 00280 "[" . $dumper->describeValue($first) . 00281 "] and [" . $dumper->describeValue($second) . 00282 "] should not be the same object"); 00283 return $this->assertFalse( 00284 SimpleTestCompatibility::isReference($first, $second), 00285 $message); 00286 } 00287 00298 function assertPattern($pattern, $subject, $message = '%s') { 00299 return $this->assert( 00300 new PatternExpectation($pattern), 00301 $subject, 00302 $message); 00303 } 00304 00308 function assertWantedPattern($pattern, $subject, $message = '%s') { 00309 return $this->assertPattern($pattern, $subject, $message); 00310 } 00311 00322 function assertNoPattern($pattern, $subject, $message = '%s') { 00323 return $this->assert( 00324 new NoPatternExpectation($pattern), 00325 $subject, 00326 $message); 00327 } 00328 00332 function assertNoUnwantedPattern($pattern, $subject, $message = '%s') { 00333 return $this->assertNoPattern($pattern, $subject, $message); 00334 } 00335 00339 function swallowErrors() { 00340 $context = &SimpleTest::getContext(); 00341 $queue = &$context->get('SimpleErrorQueue'); 00342 $queue->clear(); 00343 } 00344 00348 function assertNoErrors($message = '%s') { 00349 $context = &SimpleTest::getContext(); 00350 $queue = &$context->get('SimpleErrorQueue'); 00351 return $queue->assertNoErrors($message); 00352 } 00353 00357 function assertError($expected = false, $message = '%s') { 00358 $context = &SimpleTest::getContext(); 00359 $queue = &$context->get('SimpleErrorQueue'); 00360 return $queue->assertError($this->_coerceExpectation($expected), $message); 00361 } 00362 00371 function expectError($expected = false, $message = '%s') { 00372 $context = &SimpleTest::getContext(); 00373 $queue = &$context->get('SimpleErrorQueue'); 00374 $queue->expectError($this->_coerceExpectation($expected), $message); 00375 } 00376 00385 function expectException($expected = false, $message = '%s') { 00386 $context = &SimpleTest::getContext(); 00387 $queue = &$context->get('SimpleExceptionTrap'); 00388 // :HACK: Directly substituting in seems to cause a segfault with 00389 // Zend Optimizer on some systems 00390 $line = $this->getAssertionLine(); 00391 $queue->expectException($expected, $message . $line); 00392 } 00393 00402 function _coerceExpectation($expected) { 00403 if ($expected == false) { 00404 return new TrueExpectation(); 00405 } 00406 if (SimpleTestCompatibility::isA($expected, 'SimpleExpectation')) { 00407 return $expected; 00408 } 00409 return new EqualExpectation( 00410 is_string($expected) ? str_replace('%', '%%', $expected) : $expected); 00411 } 00412 00416 function assertErrorPattern($pattern, $message = '%s') { 00417 return $this->assertError(new PatternExpectation($pattern), $message); 00418 } 00419 } 00420 ?>