94 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // mocks
 | |
| class HTMLPurifier_ContextTest extends HTMLPurifier_Harness
 | |
| {
 | |
| 
 | |
|     protected $context;
 | |
| 
 | |
|     public function setUp()
 | |
|     {
 | |
|         $this->context = new HTMLPurifier_Context();
 | |
|     }
 | |
| 
 | |
|     public function testStandardUsage()
 | |
|     {
 | |
|         generate_mock_once('HTMLPurifier_IDAccumulator');
 | |
| 
 | |
|         $this->assertFalse($this->context->exists('IDAccumulator'));
 | |
| 
 | |
|         $accumulator = new HTMLPurifier_IDAccumulatorMock();
 | |
|         $this->context->register('IDAccumulator', $accumulator);
 | |
|         $this->assertTrue($this->context->exists('IDAccumulator'));
 | |
| 
 | |
|         $accumulator_2 =& $this->context->get('IDAccumulator');
 | |
|         $this->assertReference($accumulator, $accumulator_2);
 | |
| 
 | |
|         $this->context->destroy('IDAccumulator');
 | |
|         $this->assertFalse($this->context->exists('IDAccumulator'));
 | |
| 
 | |
|         $this->expectError('Attempted to retrieve non-existent variable IDAccumulator');
 | |
|         $accumulator_3 =& $this->context->get('IDAccumulator');
 | |
|         $this->assertNull($accumulator_3);
 | |
| 
 | |
|         $this->expectError('Attempted to destroy non-existent variable IDAccumulator');
 | |
|         $this->context->destroy('IDAccumulator');
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function testReRegister()
 | |
|     {
 | |
|         $var = true;
 | |
|         $this->context->register('OnceOnly', $var);
 | |
| 
 | |
|         $this->expectError('Name OnceOnly produces collision, cannot re-register');
 | |
|         $this->context->register('OnceOnly', $var);
 | |
| 
 | |
|         // destroy it, now registration is okay
 | |
|         $this->context->destroy('OnceOnly');
 | |
|         $this->context->register('OnceOnly', $var);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_loadArray()
 | |
|     {
 | |
|         // references can be *really* wonky!
 | |
| 
 | |
|         $context_manual = new HTMLPurifier_Context();
 | |
|         $context_load   = new HTMLPurifier_Context();
 | |
| 
 | |
|         $var1 = 1;
 | |
|         $var2 = 2;
 | |
| 
 | |
|         $context_manual->register('var1', $var1);
 | |
|         $context_manual->register('var2', $var2);
 | |
| 
 | |
|         // you MUST set up the references when constructing the array,
 | |
|         // otherwise the registered version will be a copy
 | |
|         $array = array(
 | |
|             'var1' => &$var1,
 | |
|             'var2' => &$var2
 | |
|         );
 | |
| 
 | |
|         $context_load->loadArray($array);
 | |
|         $this->assertIdentical($context_manual, $context_load);
 | |
| 
 | |
|         $var1 = 10;
 | |
|         $var2 = 20;
 | |
| 
 | |
|         $this->assertIdentical($context_manual, $context_load);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function testNull() {
 | |
|         $context = new HTMLPurifier_Context();
 | |
|         $var = NULL;
 | |
|         $context->register('var', $var);
 | |
|         $this->assertNull($context->get('var'));
 | |
|         $context->destroy('var');
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| // vim: et sw=4 sts=4
 | 
