147 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| class HTMLPurifier_HTMLModuleTest extends HTMLPurifier_Harness
 | |
| {
 | |
| 
 | |
|     public function test_addElementToContentSet()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
| 
 | |
|         $module->addElementToContentSet('b', 'Inline');
 | |
|         $this->assertIdentical($module->content_sets, array('Inline' => 'b'));
 | |
| 
 | |
|         $module->addElementToContentSet('i', 'Inline');
 | |
|         $this->assertIdentical($module->content_sets, array('Inline' => 'b | i'));
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_addElement()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
|         $def = $module->addElement(
 | |
|             'a', 'Inline', 'Optional: #PCDATA', array('Common'),
 | |
|             array(
 | |
|                 'href' => 'URI'
 | |
|             )
 | |
|         );
 | |
| 
 | |
|         $module2 = new HTMLPurifier_HTMLModule();
 | |
|         $def2 = new HTMLPurifier_ElementDef();
 | |
|         $def2->content_model = '#PCDATA';
 | |
|         $def2->content_model_type = 'optional';
 | |
|         $def2->attr = array(
 | |
|             'href' => 'URI',
 | |
|             0 => array('Common')
 | |
|         );
 | |
|         $module2->info['a'] = $def2;
 | |
|         $module2->elements = array('a');
 | |
|         $module2->content_sets['Inline'] = 'a';
 | |
| 
 | |
|         $this->assertIdentical($module, $module2);
 | |
|         $this->assertIdentical($def, $def2);
 | |
|         $this->assertReference($def, $module->info['a']);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_parseContents()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
| 
 | |
|         // pre-defined templates
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('Inline'),
 | |
|             array('optional', 'Inline | #PCDATA')
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('Flow'),
 | |
|             array('optional', 'Flow | #PCDATA')
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('Empty'),
 | |
|             array('empty', '')
 | |
|         );
 | |
| 
 | |
|         // normalization procedures
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('optional: a'),
 | |
|             array('optional', 'a')
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('OPTIONAL :a'),
 | |
|             array('optional', 'a')
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('Optional: a'),
 | |
|             array('optional', 'a')
 | |
|         );
 | |
| 
 | |
|         // others
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents('Optional: a | b | c'),
 | |
|             array('optional', 'a | b | c')
 | |
|         );
 | |
| 
 | |
|         // object pass-through
 | |
|         generate_mock_once('HTMLPurifier_AttrDef');
 | |
|         $this->assertIdentical(
 | |
|             $module->parseContents(new HTMLPurifier_AttrDefMock()),
 | |
|             array(null, null)
 | |
|         );
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_mergeInAttrIncludes()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
| 
 | |
|         $attr = array();
 | |
|         $module->mergeInAttrIncludes($attr, 'Common');
 | |
|         $this->assertIdentical($attr, array(0 => array('Common')));
 | |
| 
 | |
|         $attr = array('a' => 'b');
 | |
|         $module->mergeInAttrIncludes($attr, array('Common', 'Good'));
 | |
|         $this->assertIdentical($attr, array('a' => 'b', 0 => array('Common', 'Good')));
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_addBlankElement()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
|         $def = $module->addBlankElement('a');
 | |
| 
 | |
|         $def2 = new HTMLPurifier_ElementDef();
 | |
|         $def2->standalone = false;
 | |
| 
 | |
|         $this->assertReference($module->info['a'], $def);
 | |
|         $this->assertIdentical($def, $def2);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function test_makeLookup()
 | |
|     {
 | |
|         $module = new HTMLPurifier_HTMLModule();
 | |
| 
 | |
|         $this->assertIdentical(
 | |
|             $module->makeLookup('foo'),
 | |
|             array('foo' => true)
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->makeLookup(array('foo')),
 | |
|             array('foo' => true)
 | |
|         );
 | |
| 
 | |
|         $this->assertIdentical(
 | |
|             $module->makeLookup('foo', 'two'),
 | |
|             array('foo' => true, 'two' => true)
 | |
|         );
 | |
|         $this->assertIdentical(
 | |
|             $module->makeLookup(array('foo', 'two')),
 | |
|             array('foo' => true, 'two' => true)
 | |
|         );
 | |
| 
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| // vim: et sw=4 sts=4
 | 
