0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-09-19 18:55:19 +00:00
htmlpurifier/tests/HTMLPurifier/HTMLModuleTest.php
Edward Z. Yang eaabccdd9b [3.1.0] More PHP4->PHP5 conversions, notably reference removal of most methods that return objects
- Removed HTMLPurifier_Error
- Documentation updates
- Removed more copy() methods in favor of clone
- HTMLPurifier::getInstance() to HTMLPurifier::instance()
- Fix InterchangeBuilder to use HTMLPURIFIER_PREFIX

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1689 48356398-32a2-884e-a903-53898d9a118a
2008-04-23 02:40:17 +00:00

146 lines
4.2 KiB
PHP

<?php
class HTMLPurifier_HTMLModuleTest extends HTMLPurifier_Harness
{
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'));
}
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']);
}
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)
);
}
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')));
}
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);
}
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)
);
}
}