summaryrefslogtreecommitdiff
path: root/test_tools/simpletest/unit_tester.php
diff options
context:
space:
mode:
Diffstat (limited to 'test_tools/simpletest/unit_tester.php')
-rw-r--r--test_tools/simpletest/unit_tester.php303
1 files changed, 303 insertions, 0 deletions
diff --git a/test_tools/simpletest/unit_tester.php b/test_tools/simpletest/unit_tester.php
new file mode 100644
index 00000000..fa5e28b4
--- /dev/null
+++ b/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]");
+ }
+ }
+?>