fixesForLevel['light'][] = 'light-fix'; $module->fixesForLevel['medium'][] = 'medium-fix'; $module->fixesForLevel['heavy'][] = 'heavy-fix'; $this->assertIdentical( array(), $module->getFixesForLevel('none') ); $this->assertIdentical( array('light-fix' => true), $module->getFixesForLevel('light') ); $this->assertIdentical( array('light-fix' => true, 'medium-fix' => true), $module->getFixesForLevel('medium') ); $this->assertIdentical( array('light-fix' => true, 'medium-fix' => true, 'heavy-fix' => true), $module->getFixesForLevel('heavy') ); $this->expectError('Tidy level turbo not recognized'); $module->getFixesForLevel('turbo'); } function test_construct() { $i = 0; // counter, helps us isolate expectations // initialize partial mock $module = new HTMLPurifier_HTMLModule_Tidy_TestForConstruct(); $module->fixesForLevel['light'] = array('light-fix-1', 'light-fix-2'); $module->fixesForLevel['medium'] = array('medium-fix-1', 'medium-fix-2'); $module->fixesForLevel['heavy'] = array('heavy-fix-1', 'heavy-fix-2'); $j = 0; $fixes = array( 'light-fix-1' => $lf1 = $j++, 'light-fix-2' => $lf2 = $j++, 'medium-fix-1' => $mf1 = $j++, 'medium-fix-2' => $mf2 = $j++, 'heavy-fix-1' => $hf1 = $j++, 'heavy-fix-2' => $hf2 = $j++ ); $module->setReturnValue('makeFixes', $fixes); $config = HTMLPurifier_Config::create(array( 'HTML.TidyLevel' => 'none' )); $module->expectAt($i++, 'populate', array(array())); $module->construct($config); // basic levels $config = HTMLPurifier_Config::create(array( 'HTML.TidyLevel' => 'light' )); $module->expectAt($i++, 'populate', array(array( 'light-fix-1' => $lf1, 'light-fix-2' => $lf2 ))); $module->construct($config); $config = HTMLPurifier_Config::create(array( 'HTML.TidyLevel' => 'heavy' )); $module->expectAt($i++, 'populate', array(array( 'light-fix-1' => $lf1, 'light-fix-2' => $lf2, 'medium-fix-1' => $mf1, 'medium-fix-2' => $mf2, 'heavy-fix-1' => $hf1, 'heavy-fix-2' => $hf2 ))); $module->construct($config); // fine grained tuning $config = HTMLPurifier_Config::create(array( 'HTML.TidyLevel' => 'none', 'HTML.TidyAdd' => array('light-fix-1', 'medium-fix-1') )); $module->expectAt($i++, 'populate', array(array( 'light-fix-1' => $lf1, 'medium-fix-1' => $mf1 ))); $module->construct($config); $config = HTMLPurifier_Config::create(array( 'HTML.TidyLevel' => 'medium', 'HTML.TidyRemove' => array('light-fix-1', 'medium-fix-1') )); $module->expectAt($i++, 'populate', array(array( 'light-fix-2' => $lf2, 'medium-fix-2' => $mf2 ))); $module->construct($config); // done $module->tally(); } function test_makeFixesForLevel() { $module = new HTMLPurifier_HTMLModule_Tidy(); $module->defaultLevel = 'heavy'; $module->makeFixesForLevel(array( 'fix-1' => 0, 'fix-2' => 1, 'fix-3' => 2 )); $this->assertIdentical($module->fixesForLevel['heavy'], array('fix-1', 'fix-2', 'fix-3')); $this->assertIdentical($module->fixesForLevel['medium'], array()); $this->assertIdentical($module->fixesForLevel['light'], array()); } function test_makeFixesForLevel_undefinedLevel() { $module = new HTMLPurifier_HTMLModule_Tidy(); $module->defaultLevel = 'bananas'; $this->expectError('Default level bananas does not exist'); $module->makeFixesForLevel(array( 'fix-1' => 0 )); } function test_getFixType() { // syntax needs documenting $module = new HTMLPurifier_HTMLModule_Tidy(); $this->assertIdentical( $module->getFixType('a'), array('tag_transform', array('element' => 'a')) ); $this->assertIdentical( $module->getFixType('a@href'), $reuse = array('attr_transform_pre', array('element' => 'a', 'attr' => 'href')) ); $this->assertIdentical( $module->getFixType('a@href#pre'), $reuse ); $this->assertIdentical( $module->getFixType('a@href#post'), array('attr_transform_post', array('element' => 'a', 'attr' => 'href')) ); $this->assertIdentical( $module->getFixType('xml:foo@xml:bar'), array('attr_transform_pre', array('element' => 'xml:foo', 'attr' => 'xml:bar')) ); $this->assertIdentical( $module->getFixType('blockquote#child'), array('child', array('element' => 'blockquote')) ); $this->assertIdentical( $module->getFixType('@lang'), array('attr_transform_pre', array('attr' => 'lang')) ); $this->assertIdentical( $module->getFixType('@lang#post'), array('attr_transform_post', array('attr' => 'lang')) ); } function test_populate() { $i = 0; $module = new HTMLPurifier_HTMLModule_Tidy(); $module->populate(array( 'element' => $element = $i++, 'element@attr' => $attr = $i++, 'element@attr#post' => $attr_post = $i++, 'element#child' => $child = $i++, 'element#content_model_type' => $content_model_type = $i++, '@attr' => $global_attr = $i++, '@attr#post' => $global_attr_post = $i++ )); $module2 = new HTMLPurifier_HTMLModule_Tidy(); $e =& $module2->addBlankElement('element'); $e->attr_transform_pre['attr'] = $attr; $e->attr_transform_post['attr'] = $attr_post; $e->child = $child; $e->content_model_type = $content_model_type; $module2->info_tag_transform['element'] = $element; $module2->info_attr_transform_pre['attr'] = $global_attr; $module2->info_attr_transform_post['attr'] = $global_attr_post; $this->assertEqual($module, $module2); } }