diff options
Diffstat (limited to 'lib/htmlpurifier/tests/HTMLPurifier/Harness.php')
-rw-r--r-- | lib/htmlpurifier/tests/HTMLPurifier/Harness.php | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/lib/htmlpurifier/tests/HTMLPurifier/Harness.php b/lib/htmlpurifier/tests/HTMLPurifier/Harness.php new file mode 100644 index 000000000..d6490a117 --- /dev/null +++ b/lib/htmlpurifier/tests/HTMLPurifier/Harness.php @@ -0,0 +1,90 @@ +<?php + +/** + * All-use harness, use this rather than SimpleTest's + */ +class HTMLPurifier_Harness extends UnitTestCase +{ + + public function __construct($name = null) { + parent::__construct($name); + } + + protected $config, $context, $purifier; + + /** + * Generates easily accessible default config/context, as well as + * a convenience purifier for integration testing. + */ + public function setUp() { + list($this->config, $this->context) = $this->createCommon(); + $this->config->set('Output.Newline', ' +'); + $this->purifier = new HTMLPurifier(); + } + + /** + * Asserts a purification. Good for integration testing. + */ + function assertPurification($input, $expect = null) { + if ($expect === null) $expect = $input; + $result = $this->purifier->purify($input, $this->config); + $this->assertIdentical($expect, $result); + } + + + /** + * Accepts config and context and prepares them into a valid state + * @param &$config Reference to config variable + * @param &$context Reference to context variable + */ + protected function prepareCommon(&$config, &$context) { + $config = HTMLPurifier_Config::create($config); + if (!$context) $context = new HTMLPurifier_Context(); + } + + /** + * Generates default configuration and context objects + * @return Defaults in form of array($config, $context) + */ + protected function createCommon() { + return array(HTMLPurifier_Config::createDefault(), new HTMLPurifier_Context); + } + + /** + * Normalizes a string to Unix (\n) endings + */ + protected function normalize(&$string) { + $string = str_replace(array("\r\n", "\r"), "\n", $string); + } + + /** + * If $expect is false, ignore $result and check if status failed. + * Otherwise, check if $status if true and $result === $expect. + * @param $status Boolean status + * @param $result Mixed result from processing + * @param $expect Mixed expectation for result + */ + protected function assertEitherFailOrIdentical($status, $result, $expect) { + if ($expect === false) { + $this->assertFalse($status, 'Expected false result, got true'); + } else { + $this->assertTrue($status, 'Expected true result, got false'); + $this->assertIdentical($result, $expect); + } + } + + public function getTests() { + // __onlytest makes only one test get triggered + foreach (get_class_methods(get_class($this)) as $method) { + if (strtolower(substr($method, 0, 10)) == '__onlytest') { + $this->reporter->paintSkip('All test methods besides ' . $method); + return array($method); + } + } + return parent::getTests(); + } + +} + +// vim: et sw=4 sts=4 |