context->register ( 'IDAccumulator', $id_accumulator ); $this->config->set ( 'Attr.EnableID', true ); $this->def = new HTMLPurifier_AttrDef_HTML_ID (); } public function test() { // valid ID names $this->assertDef ( 'alpha' ); $this->assertDef ( 'al_ha' ); $this->assertDef ( 'a0-:.' ); $this->assertDef ( 'a' ); // invalid ID names $this->assertDef ( 'assertDef ( '0123', false ); $this->assertDef ( '.asa', false ); // test duplicate detection $this->assertDef ( 'once' ); $this->assertDef ( 'once', false ); // valid once whitespace stripped, but needs to be amended $this->assertDef ( ' whee ', 'whee' ); } public function testPrefix() { $this->config->set ( 'Attr.IDPrefix', 'user_' ); $this->assertDef ( 'alpha', 'user_alpha' ); $this->assertDef ( 'assertDef ( 'once', 'user_once' ); $this->assertDef ( 'once', false ); // if already prefixed, leave alone $this->assertDef ( 'user_alas' ); $this->assertDef ( 'user_user_alas' ); // how to bypass } public function testTwoPrefixes() { $this->config->set ( 'Attr.IDPrefix', 'user_' ); $this->config->set ( 'Attr.IDPrefixLocal', 'story95_' ); $this->assertDef ( 'alpha', 'user_story95_alpha' ); $this->assertDef ( 'assertDef ( 'once', 'user_story95_once' ); $this->assertDef ( 'once', false ); $this->assertDef ( 'user_story95_alas' ); $this->assertDef ( 'user_alas', 'user_story95_user_alas' ); // ! } public function testLocalPrefixWithoutMainPrefix() { // no effect when IDPrefix isn't set $this->config->set ( 'Attr.IDPrefix', '' ); $this->config->set ( 'Attr.IDPrefixLocal', 'story95_' ); $this->expectError ( '%Attr.IDPrefixLocal cannot be used unless ' . '%Attr.IDPrefix is set' ); $this->assertDef ( 'amherst' ); } // reference functionality is disabled for now public function disabled_testIDReference() { $this->def = new HTMLPurifier_AttrDef_HTML_ID ( true ); $this->assertDef ( 'good_id' ); $this->assertDef ( 'good_id' ); // duplicates okay $this->assertDef ( '', false ); $this->def = new HTMLPurifier_AttrDef_HTML_ID (); $this->assertDef ( 'good_id' ); $this->assertDef ( 'good_id', false ); // duplicate now not okay $this->def = new HTMLPurifier_AttrDef_HTML_ID ( true ); $this->assertDef ( 'good_id' ); // reference still okay } public function testRegexp() { $this->config->set ( 'Attr.IDBlacklistRegexp', '/^g_/' ); $this->assertDef ( 'good_id' ); $this->assertDef ( 'g_bad_id', false ); } } // vim: et sw=4 sts=4