1
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2025-08-07 06:36:44 +02:00

[1.7.0] New compact syntax for AttrDef objects that can be used to instantiate new objects via make()

- Implemented make() for Enum and Bool
- Migrate classes over to this new syntax
- Add AttrDef_HTML_Bool unit test

git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1088 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
Edward Z. Yang
2007-05-23 00:39:07 +00:00
parent 818d0d7a23
commit 7579932948
14 changed files with 114 additions and 45 deletions

View File

@@ -7,29 +7,27 @@ class HTMLPurifier_AttrDef_EnumTest extends HTMLPurifier_AttrDefHarness
{
function testCaseInsensitive() {
$this->def = new HTMLPurifier_AttrDef_Enum(array('one', 'two'));
$this->assertDef('one');
$this->assertDef('ONE', 'one');
}
function testCaseSensitive() {
$this->def = new HTMLPurifier_AttrDef_Enum(array('one', 'two'), true);
$this->assertDef('one');
$this->assertDef('ONE', false);
}
function testFixing() {
$this->def = new HTMLPurifier_AttrDef_Enum(array('one'));
$this->assertDef(' one ', 'one');
}
function test_make() {
$factory = new HTMLPurifier_AttrDef_Enum();
$def = $factory->make('foo,bar');
$def2 = new HTMLPurifier_AttrDef_Enum(array('foo', 'bar'));
$this->assertIdentical($def, $def2);
}
}

View File

@@ -0,0 +1,25 @@
<?php
require_once 'HTMLPurifier/AttrDefHarness.php';
require_once 'HTMLPurifier/AttrDef/HTML/Bool.php';
class HTMLPurifier_AttrDef_HTML_BoolTest extends HTMLPurifier_AttrDefHarness
{
function test() {
$this->def = new HTMLPurifier_AttrDef_HTML_Bool('foo');
$this->assertDef('foo');
$this->assertDef('', false);
$this->assertDef('bar', false);
}
function test_make() {
$factory = new HTMLPurifier_AttrDef_HTML_Bool();
$def = $factory->make('foo');
$def2 = new HTMLPurifier_AttrDef_HTML_Bool('foo');
$this->assertIdentical($def, $def2);
}
}
?>

View File

@@ -17,6 +17,14 @@ class HTMLPurifier_AttrDefTest extends UnitTestCase
}
function test_make() {
$def = new HTMLPurifier_AttrDef();
$def2 = $def->make('');
$this->assertIdentical($def, $def2);
}
}
?>

View File

@@ -16,10 +16,10 @@ class HTMLPurifier_AttrTypesTest extends UnitTestCase
$this->expectError('Cannot retrieve undefined attribute type foobar');
$types->get('foobar');
//$this->assertIdentical(
// $types->get('Enum#foo,bar'),
// new HTMLPurifier_AttrDef_Enum(array('foo', 'bar'))
//);
$this->assertIdentical(
$types->get('Enum#foo,bar'),
new HTMLPurifier_AttrDef_Enum(array('foo', 'bar'))
);
}

View File

@@ -9,9 +9,12 @@ class HTMLPurifier_HTMLModuleManagerTest extends UnitTestCase
$manager = new HTMLPurifier_HTMLModuleManager();
$manager->doctypes->register('Blank'); // doctype normally is blank...
$attrdef_nmtokens = 1; // magic number
generate_mock_once('HTMLPurifier_AttrDef');
$attrdef_nmtokens =& new HTMLPurifier_AttrDefMock($this);
$manager->attrTypes->info['NMTOKENS'] =& $attrdef_nmtokens;
$attrdef =& new HTMLPurifier_AttrDefMock($this);
$attrdef->setReturnValue('make', $attrdef_nmtokens);
$manager->attrTypes->info['NMTOKENS'] =& $attrdef;
// ...but we add user modules