From 8f87d873fa04a2b175ac45421e63973102757e64 Mon Sep 17 00:00:00 2001 From: Platonides Date: Tue, 11 Jan 2011 18:37:15 +0000 Subject: [PATCH] Add tests for parser tag hooks. --- tests/phpunit/includes/parser/TagHooks.php | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/phpunit/includes/parser/TagHooks.php diff --git a/tests/phpunit/includes/parser/TagHooks.php b/tests/phpunit/includes/parser/TagHooks.php new file mode 100644 index 0000000000..2227908900 --- /dev/null +++ b/tests/phpunit/includes/parser/TagHooks.php @@ -0,0 +1,77 @@ +bar" ), array( "foo bar" ), array( "foo\nbar" ), array( "foo\rbar" ) ); + } + + /** + * @dataProvider provideValidNames + */ + function testTagHooks( $tag ) { + global $wgParserConf; + $parser = new Parser( $wgParserConf ); + + $parser->setHook( $tag, array( $this, 'tagCallback' ) ); + $parserOutput = $parser->parse( "Foo<$tag>BarBaz", new Title( 'Test' ), new ParserOptions ); + $this->assertEquals( "

FooOneBaz\n

", $parserOutput->getText() ); + + $parser->mPreprocessor = null; # Break the Parser <-> Preprocessor cycle + } + + /** + * @dataProvider provideBadNames + * @expectedException MWException + */ + function testBadTagHooks( $tag ) { + global $wgParserConf; + $parser = new Parser( $wgParserConf ); + + $parser->setHook( $tag, array( $this, 'tagCallback' ) ); + $parser->parse( "Foo<$tag>BarBaz", new Title( 'Test' ), new ParserOptions ); + $this->fail('Exception not thrown.'); + } + + /** + * @dataProvider provideValidNames + */ + function testFunctionTagHooks( $tag ) { + global $wgParserConf; + $parser = new Parser( $wgParserConf ); + + $parser->setFunctionTagHook( $tag, array( $this, 'functionTagCallback' ), 0 ); + $parserOutput = $parser->parse( "Foo<$tag>BarBaz", new Title( 'Test' ), new ParserOptions ); + $this->assertEquals( "

FooOneBaz\n

", $parserOutput->getText() ); + + $parser->mPreprocessor = null; # Break the Parser <-> Preprocessor cycle + } + + /** + * @dataProvider provideBadNames + * @expectedException MWException + */ + function testBadFunctionTagHooks( $tag ) { + global $wgParserConf; + $parser = new Parser( $wgParserConf ); + + $parser->setFunctionTagHook( $tag, array( $this, 'functionTagCallback' ), SFH_OBJECT_ARGS ); + $parser->parse( "Foo<$tag>BarBaz", new Title( 'Test' ), new ParserOptions ); + $this->fail('Exception not thrown.'); + } + + function tagCallback( $text, $params, $parser ) { + return str_rot13( $text ); + } + + function functionTagCallback( &$parser, $frame, $code, $attribs ) { + return str_rot13( $code ); + } +} -- 2.20.1