obj = new HTMLPurifier_Strategy_MakeWellFormed(); $this->config->set('AutoFormat', 'AutoParagraph', true); $this->config->set('AutoFormat', 'Linkify', true); $this->config->set('AutoFormat', 'RemoveEmpty', true); generate_mock_once('HTMLPurifier_Injector'); } function testEndHandler() { $mock = new HTMLPurifier_InjectorMock(); $b = new HTMLPurifier_Token_End('b'); $b->skip = array(0 => true); $b->start = new HTMLPurifier_Token_Start('b'); $b->start->skip = array(0 => true, 1 => true); $mock->expectAt(0, 'handleEnd', array($b)); $i = new HTMLPurifier_Token_End('i'); $i->start = new HTMLPurifier_Token_Start('i'); $i->skip = array(0 => true); $i->start->skip = array(0 => true, 1 => true); $mock->expectAt(1, 'handleEnd', array($i)); $mock->expectCallCount('handleEnd', 2); $mock->setReturnValue('getRewind', false); $this->config->set('AutoFormat', 'AutoParagraph', false); $this->config->set('AutoFormat', 'Linkify', false); $this->config->set('AutoFormat', 'Custom', array($mock)); $this->assertResult('asdf', 'asdf'); } function testErrorRequiredElementNotAllowed() { $this->config->set('HTML', 'Allowed', ''); $this->expectError('Cannot enable AutoParagraph injector because p is not allowed'); $this->expectError('Cannot enable Linkify injector because a is not allowed'); $this->assertResult('Foobar'); } function testErrorRequiredAttributeNotAllowed() { $this->config->set('HTML', 'Allowed', 'a,p'); $this->expectError('Cannot enable Linkify injector because a.href is not allowed'); $this->assertResult('

http://example.com

'); } function testOnlyAutoParagraph() { $this->assertResult( 'Foobar', '

Foobar

' ); } function testParagraphWrappingOnlyLink() { $this->assertResult( 'http://example.com', '

http://example.com

' ); } function testParagraphWrappingNodeContainingLink() { $this->assertResult( 'http://example.com', '

http://example.com

' ); } function testParagraphWrappingPoorlyFormedNodeContainingLink() { $this->assertResult( 'http://example.com', '

http://example.com

' ); } function testTwoParagraphsContainingOnlyOneLink() { $this->assertResult( "http://example.com\n\nhttp://dev.example.com", '

http://example.com

http://dev.example.com

' ); } function testParagraphNextToDivWithLinks() { $this->assertResult( 'http://example.com
http://example.com
', '

http://example.com

http://example.com
' ); } function testRealisticLinkInSentence() { $this->assertResult( 'This URL http://example.com is what you need', '

This URL http://example.com is what you need

' ); } function testParagraphAfterLinkifiedURL() { $this->assertResult( "http://google.com b", "

http://google.com

b

" ); } function testEmptyAndParagraph() { // This is a fairly degenerate case, but it demonstrates that // the two don't error out together, at least. // Change this behavior! $this->assertResult( "

asdf asdf

", "

asdf

asdf

" ); } function testRewindAndParagraph() { $this->assertResult( "bar

foo", "

bar

foo

" ); } }