118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * All-use harness, use this rather than SimpleTest's
 | |
|  */
 | |
| class HTMLPurifier_Harness extends UnitTestCase
 | |
| {
 | |
| 
 | |
|     public function __construct($name = null)
 | |
|     {
 | |
|         parent::__construct($name);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @type HTMLPurifier_Config
 | |
|      */
 | |
|     protected $config;
 | |
| 
 | |
|     /**
 | |
|      * @type HTMLPurifier_Context
 | |
|      */
 | |
|     protected $context;
 | |
| 
 | |
|     /**
 | |
|      * @type HTMLPurifier
 | |
|      */
 | |
|     protected $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.
 | |
|      * @param string $input
 | |
|      * @param string $expect
 | |
|      */
 | |
|     public 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
 | 
