context->register('IDAccumulator', $id_accumulator); $this->def = new HTMLPurifier_AttrDef_ID(); } 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'); } 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 } 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'); // ! // no effect when IDPrefix isn't set $this->config->set('Attr', 'IDPrefix', ''); $this->expectError('%Attr.IDPrefixLocal cannot be used unless '. '%Attr.IDPrefix is set'); $this->assertDef('amherst'); } function testIDReference() { $this->def = new HTMLPurifier_AttrDef_ID(true); $this->assertDef('good_id'); $this->assertDef('good_id'); // duplicates okay $this->assertDef('', false); $this->def = new HTMLPurifier_AttrDef_ID(); $this->assertDef('good_id'); $this->assertDef('good_id', false); // duplicate now not okay $this->def = new HTMLPurifier_AttrDef_ID(true); $this->assertDef('good_id'); // reference still okay } } ?>