summaryrefslogtreecommitdiff
path: root/tests/test_tools/simpletest/unit_tester.php
diff options
context:
space:
mode:
authorwei <>2006-07-07 23:18:19 +0000
committerwei <>2006-07-07 23:18:19 +0000
commitb2e97539e7af7712b04dd5c2610a454d09aa0333 (patch)
treed09ae76ddc7f349a39b74b0cb1f40c8b678a352e /tests/test_tools/simpletest/unit_tester.php
parentfce10eed76455b7e0419f13affb4f29e73ef0375 (diff)
Update simpletest
Diffstat (limited to 'tests/test_tools/simpletest/unit_tester.php')
-rw-r--r--tests/test_tools/simpletest/unit_tester.php182
1 files changed, 126 insertions, 56 deletions
diff --git a/tests/test_tools/simpletest/unit_tester.php b/tests/test_tools/simpletest/unit_tester.php
index fa5e28b4..88e10b14 100644
--- a/tests/test_tools/simpletest/unit_tester.php
+++ b/tests/test_tools/simpletest/unit_tester.php
@@ -3,17 +3,16 @@
* 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 $
+ * @version $Id: unit_tester.php,v 1.31 2006/02/06 06:05:18 lastcraft Exp $
*/
/**#@+
* include other SimpleTest class files
*/
- require_once(dirname(__FILE__) . '/simple_test.php');
- require_once(dirname(__FILE__) . '/errors.php');
+ require_once(dirname(__FILE__) . '/test_case.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
@@ -22,7 +21,7 @@
* @subpackage UnitTester
*/
class UnitTestCase extends SimpleTestCase {
-
+
/**
* Creates an empty test case. Should be subclassed
* with test methods for a functional test case.
@@ -36,7 +35,7 @@
}
$this->SimpleTestCase($label);
}
-
+
/**
* Will be true if the value is null.
* @param null $value Supposedly null value.
@@ -51,7 +50,7 @@
"[" . $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.
@@ -66,7 +65,7 @@
"[" . $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
@@ -78,12 +77,12 @@
* @access public
*/
function assertIsA($object, $type, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new IsAExpectation($type),
$object,
$message);
}
-
+
/**
* Type and class mismatch test. Will pass if class
* name or underling type does not match the one
@@ -95,12 +94,12 @@
* @access public
*/
function assertNotA($object, $type, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new NotAExpectation($type),
$object,
$message);
}
-
+
/**
* Will trigger a pass if the two parameters have
* the same value only. Otherwise a fail.
@@ -111,12 +110,12 @@
* @access public
*/
function assertEqual($first, $second, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new EqualExpectation($first),
$second,
$message);
}
-
+
/**
* Will trigger a pass if the two parameters have
* a different value. Otherwise a fail.
@@ -127,12 +126,46 @@
* @access public
*/
function assertNotEqual($first, $second, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new NotEqualExpectation($first),
$second,
$message);
}
-
+
+ /**
+ * Will trigger a pass if the if the first parameter
+ * is near enough to the second by the margin.
+ * @param mixed $first Value to compare.
+ * @param mixed $second Value to compare.
+ * @param mixed $margin Fuzziness of match.
+ * @param string $message Message to display.
+ * @return boolean True on pass
+ * @access public
+ */
+ function assertWithinMargin($first, $second, $margin, $message = "%s") {
+ return $this->assert(
+ new WithinMarginExpectation($first, $margin),
+ $second,
+ $message);
+ }
+
+ /**
+ * Will trigger a pass if the two parameters differ
+ * by more than the margin.
+ * @param mixed $first Value to compare.
+ * @param mixed $second Value to compare.
+ * @param mixed $margin Fuzziness of match.
+ * @param string $message Message to display.
+ * @return boolean True on pass
+ * @access public
+ */
+ function assertOutsideMargin($first, $second, $margin, $message = "%s") {
+ return $this->assert(
+ new OutsideMarginExpectation($first, $margin),
+ $second,
+ $message);
+ }
+
/**
* Will trigger a pass if the two parameters have
* the same value and same type. Otherwise a fail.
@@ -143,12 +176,12 @@
* @access public
*/
function assertIdentical($first, $second, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new IdenticalExpectation($first),
$second,
$message);
}
-
+
/**
* Will trigger a pass if the two parameters have
* the different value or different type.
@@ -159,12 +192,12 @@
* @access public
*/
function assertNotIdentical($first, $second, $message = "%s") {
- return $this->assertExpectation(
+ return $this->assert(
new NotIdenticalExpectation($first),
$second,
$message);
}
-
+
/**
* Will trigger a pass if both parameters refer
* to the same object. Fail otherwise.
@@ -185,16 +218,34 @@
SimpleTestCompatibility::isReference($first, $second),
$message);
}
-
+
/**
* Will trigger a pass if both parameters refer
- * to different objects. Fail otherwise.
+ * to different objects. Fail otherwise. The objects
+ * have to be identical though.
* @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 assertClone($first, $second, $message = "%s") {
+ $dumper = new SimpleDumper();
+ $message = sprintf(
+ $message,
+ "[" . $dumper->describeValue($first) .
+ "] and [" . $dumper->describeValue($second) .
+ "] should not be the same object");
+ $identical = new IdenticalExpectation($first);
+ return $this->assertTrue(
+ $identical->test($second) &&
+ ! SimpleTestCompatibility::isReference($first, $second),
+ $message);
+ }
+
+ /**
+ * @deprecated
+ */
function assertCopy($first, $second, $message = "%s") {
$dumper = new SimpleDumper();
$message = sprintf(
@@ -206,7 +257,7 @@
SimpleTestCompatibility::isReference($first, $second),
$message);
}
-
+
/**
* Will trigger a pass if the Perl regex pattern
* is found in the subject. Fail otherwise.
@@ -217,13 +268,20 @@
* @return boolean True on pass
* @access public
*/
- function assertWantedPattern($pattern, $subject, $message = "%s") {
- return $this->assertExpectation(
- new WantedPatternExpectation($pattern),
+ function assertPattern($pattern, $subject, $message = "%s") {
+ return $this->assert(
+ new PatternExpectation($pattern),
$subject,
$message);
}
-
+
+ /**
+ * @deprecated
+ */
+ function assertWantedPattern($pattern, $subject, $message = "%s") {
+ return $this->assertPattern($pattern, $subject, $message);
+ }
+
/**
* Will trigger a pass if the perl regex pattern
* is not present in subject. Fail if found.
@@ -234,13 +292,20 @@
* @return boolean True on pass
* @access public
*/
- function assertNoUnwantedPattern($pattern, $subject, $message = "%s") {
- return $this->assertExpectation(
- new UnwantedPatternExpectation($pattern),
+ function assertNoPattern($pattern, $subject, $message = "%s") {
+ return $this->assert(
+ new NoPatternExpectation($pattern),
$subject,
$message);
}
-
+
+ /**
+ * @deprecated
+ */
+ function assertNoUnwantedPattern($pattern, $subject, $message = "%s") {
+ return $this->assertNoPattern($pattern, $subject, $message);
+ }
+
/**
* Confirms that no errors have occoured so
* far in the test method.
@@ -249,12 +314,12 @@
* @access public
*/
function assertNoErrors($message = "%s") {
- $queue =SimpleErrorQueue::instance();
+ $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.
@@ -265,39 +330,44 @@
* @access public
*/
function assertError($expected = false, $message = "%s") {
- $queue =SimpleErrorQueue::instance();
+ $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]");
+ if (! $expected) {
+ return $this->pass(
+ "Captured a PHP error of [$content] severity [$severity] in [$file] line [$line] -> %s");
+ }
+ $expected = $this->_coerceToExpectation($expected);
+ return $this->assert(
+ $expected,
+ $content,
+ "Expected PHP error [$content] severity [$severity] in [$file] line [$line] -> %s");
}
-
+
/**
- * 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
+ * Creates an equality expectation if the
+ * object/value is not already some type
+ * of expectation.
+ * @param mixed $expected Expected value.
+ * @return SimpleExpectation Expectation object.
+ * @access private
*/
- function assertErrorPattern($pattern, $message = "%s") {
- $queue =SimpleErrorQueue::instance();
- if ($queue->isEmpty()) {
- $this->fail(sprintf($message, "Expected error not found"));
- return;
+ function _coerceToExpectation($expected) {
+ if (SimpleTestCompatibility::isA($expected, 'SimpleExpectation')) {
+ return $expected;
}
- 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]");
+ return new EqualExpectation($expected);
+ }
+
+ /**
+ * @deprecated
+ */
+ function assertErrorPattern($pattern, $message = "%s") {
+ return $this->assertError(new PatternExpectation($pattern), $message);
}
}
?>