diff options
author | xue <> | 2006-07-07 14:54:15 +0000 |
---|---|---|
committer | xue <> | 2006-07-07 14:54:15 +0000 |
commit | 61bb16ee2e5f0a66234e1575242169a10fde47b5 (patch) | |
tree | 3ee24dcc36ceae2c213130df1ea3d5c9fc110a27 /tests/test_tools/simpletest/unit_tester.php | |
parent | 7b84938b1b5964f2274d66e28ba17435924ffe35 (diff) |
Merge from 3.0 branch till 1253.
Diffstat (limited to 'tests/test_tools/simpletest/unit_tester.php')
-rw-r--r-- | tests/test_tools/simpletest/unit_tester.php | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/tests/test_tools/simpletest/unit_tester.php b/tests/test_tools/simpletest/unit_tester.php new file mode 100644 index 00000000..fa5e28b4 --- /dev/null +++ b/tests/test_tools/simpletest/unit_tester.php @@ -0,0 +1,303 @@ +<?php + /** + * base include file for SimpleTest + * @package SimpleTest + * @subpackage UnitTester + * @version $Id: unit_tester.php,v 1.24 2005/01/13 01:31:53 lastcraft Exp $ + */ + + /**#@+ + * include other SimpleTest class files + */ + require_once(dirname(__FILE__) . '/simple_test.php'); + require_once(dirname(__FILE__) . '/errors.php'); + require_once(dirname(__FILE__) . '/dumper.php'); + /**#@-*/ + + /** + * Standard unit test class for day to day testing + * of PHP code XP style. Adds some useful standard + * assertions. + * @package SimpleTest + * @subpackage UnitTester + */ + class UnitTestCase extends SimpleTestCase { + + /** + * Creates an empty test case. Should be subclassed + * with test methods for a functional test case. + * @param string $label Name of test case. Will use + * the class name if none specified. + * @access public + */ + function UnitTestCase($label = false) { + if (! $label) { + $label = get_class($this); + } + $this->SimpleTestCase($label); + } + + /** + * Will be true if the value is null. + * @param null $value Supposedly null value. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertNull($value, $message = "%s") { + $dumper = new SimpleDumper(); + $message = sprintf( + $message, + "[" . $dumper->describeValue($value) . "] should be null"); + return $this->assertTrue(! isset($value), $message); + } + + /** + * Will be true if the value is set. + * @param mixed $value Supposedly set value. + * @param string $message Message to display. + * @return boolean True on pass. + * @access public + */ + function assertNotNull($value, $message = "%s") { + $dumper = new SimpleDumper(); + $message = sprintf( + $message, + "[" . $dumper->describeValue($value) . "] should not be null"); + return $this->assertTrue(isset($value), $message); + } + + /** + * Type and class test. Will pass if class + * matches the type name or is a subclass or + * if not an object, but the type is correct. + * @param mixed $object Object to test. + * @param string $type Type name as string. + * @param string $message Message to display. + * @return boolean True on pass. + * @access public + */ + function assertIsA($object, $type, $message = "%s") { + return $this->assertExpectation( + new IsAExpectation($type), + $object, + $message); + } + + /** + * Type and class mismatch test. Will pass if class + * name or underling type does not match the one + * specified. + * @param mixed $object Object to test. + * @param string $type Type name as string. + * @param string $message Message to display. + * @return boolean True on pass. + * @access public + */ + function assertNotA($object, $type, $message = "%s") { + return $this->assertExpectation( + new NotAExpectation($type), + $object, + $message); + } + + /** + * Will trigger a pass if the two parameters have + * the same value only. Otherwise a fail. + * @param mixed $first Value to compare. + * @param mixed $second Value to compare. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertEqual($first, $second, $message = "%s") { + return $this->assertExpectation( + new EqualExpectation($first), + $second, + $message); + } + + /** + * Will trigger a pass if the two parameters have + * a different value. Otherwise a fail. + * @param mixed $first Value to compare. + * @param mixed $second Value to compare. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertNotEqual($first, $second, $message = "%s") { + return $this->assertExpectation( + new NotEqualExpectation($first), + $second, + $message); + } + + /** + * Will trigger a pass if the two parameters have + * the same value and same type. Otherwise a fail. + * @param mixed $first Value to compare. + * @param mixed $second Value to compare. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertIdentical($first, $second, $message = "%s") { + return $this->assertExpectation( + new IdenticalExpectation($first), + $second, + $message); + } + + /** + * Will trigger a pass if the two parameters have + * the different value or different type. + * @param mixed $first Value to compare. + * @param mixed $second Value to compare. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertNotIdentical($first, $second, $message = "%s") { + return $this->assertExpectation( + new NotIdenticalExpectation($first), + $second, + $message); + } + + /** + * Will trigger a pass if both parameters refer + * to the same object. Fail otherwise. + * @param mixed $first Object reference to check. + * @param mixed $second Hopefully the same object. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertReference($first, $second, $message = "%s") { + $dumper = new SimpleDumper(); + $message = sprintf( + $message, + "[" . $dumper->describeValue($first) . + "] and [" . $dumper->describeValue($second) . + "] should reference the same object"); + return $this->assertTrue( + SimpleTestCompatibility::isReference($first, $second), + $message); + } + + /** + * Will trigger a pass if both parameters refer + * to different objects. Fail otherwise. + * @param mixed $first Object reference to check. + * @param mixed $second Hopefully not the same object. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertCopy($first, $second, $message = "%s") { + $dumper = new SimpleDumper(); + $message = sprintf( + $message, + "[" . $dumper->describeValue($first) . + "] and [" . $dumper->describeValue($second) . + "] should not be the same object"); + return $this->assertFalse( + SimpleTestCompatibility::isReference($first, $second), + $message); + } + + /** + * Will trigger a pass if the Perl regex pattern + * is found in the subject. Fail otherwise. + * @param string $pattern Perl regex to look for including + * the regex delimiters. + * @param string $subject String to search in. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertWantedPattern($pattern, $subject, $message = "%s") { + return $this->assertExpectation( + new WantedPatternExpectation($pattern), + $subject, + $message); + } + + /** + * Will trigger a pass if the perl regex pattern + * is not present in subject. Fail if found. + * @param string $pattern Perl regex to look for including + * the regex delimiters. + * @param string $subject String to search in. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertNoUnwantedPattern($pattern, $subject, $message = "%s") { + return $this->assertExpectation( + new UnwantedPatternExpectation($pattern), + $subject, + $message); + } + + /** + * Confirms that no errors have occoured so + * far in the test method. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertNoErrors($message = "%s") { + $queue =SimpleErrorQueue::instance(); + return $this->assertTrue( + $queue->isEmpty(), + sprintf($message, "Should be no errors")); + } + + /** + * Confirms that an error has occoured and + * optionally that the error text matches exactly. + * @param string $expected Expected error text or + * false for no check. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertError($expected = false, $message = "%s") { + $queue =SimpleErrorQueue::instance(); + if ($queue->isEmpty()) { + $this->fail(sprintf($message, "Expected error not found")); + return; + } + list($severity, $content, $file, $line, $globals) = $queue->extract(); + $severity = SimpleErrorQueue::getSeverityAsString($severity); + return $this->assertTrue( + ! $expected || ($expected == $content), + "Expected [$expected] in PHP error [$content] severity [$severity] in [$file] line [$line]"); + } + + /** + * Confirms that an error has occoured and + * that the error text matches a Perl regular + * expression. + * @param string $pattern Perl regular expresion to + * match against. + * @param string $message Message to display. + * @return boolean True on pass + * @access public + */ + function assertErrorPattern($pattern, $message = "%s") { + $queue =SimpleErrorQueue::instance(); + if ($queue->isEmpty()) { + $this->fail(sprintf($message, "Expected error not found")); + return; + } + list($severity, $content, $file, $line, $globals) = $queue->extract(); + $severity = SimpleErrorQueue::getSeverityAsString($severity); + return $this->assertTrue( + (boolean)preg_match($pattern, $content), + "Expected pattern match [$pattern] in PHP error [$content] severity [$severity] in [$file] line [$line]"); + } + } +?> |