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' ); } public function test_setup() { $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->setup ( $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->setup ( $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->setup ( $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->setup ( $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->setup ( $config ); } public 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 () ); } public 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 ) ); } public 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' ) ) ); } public 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 ); } } // vim: et sw=4 sts=4