0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-23 00:41:52 +00:00
htmlpurifier/tests/HTMLPurifier/HTMLModuleTest.php

147 lines
4.0 KiB
PHP
Raw Permalink Normal View History

<?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