From 537d74d3a1dce5fb69b19ad4830fe112a28485d0 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Fri, 2 Jun 2017 12:45:55 -0400 Subject: [PATCH] Add tests for ParserOptions Change-Id: I3e2d945d109bbb0ebc31d65d9f6faaa7482deefe --- .../includes/parser/ParserOptionsTest.php | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/phpunit/includes/parser/ParserOptionsTest.php diff --git a/tests/phpunit/includes/parser/ParserOptionsTest.php b/tests/phpunit/includes/parser/ParserOptionsTest.php new file mode 100644 index 0000000000..aacdb1a33c --- /dev/null +++ b/tests/phpunit/includes/parser/ParserOptionsTest.php @@ -0,0 +1,77 @@ + '', + 'wgHooks' => [], + ]; + $globals['wgHooks'] += [ + 'PageRenderingHash' => [], + ] + $wgHooks; + $this->setMwGlobals( $globals ); + + $popt = new ParserOptions(); + foreach ( $options as $setter => $value ) { + $popt->$setter( $value ); + } + $this->assertSame( $expect, $popt->optionsHash( $usedOptions ) ); + } + + public static function provideOptionsHash() { + $used = [ 'wrapclass', 'editsection', 'printable' ]; + + return [ + 'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ], + 'Canonical options, used some options' => [ $used, '*!*!*!*!*', [] ], + 'Used some options, non-default values' => [ + $used, + '*!*!*!*!*!printable=1!wrapclass=foobar', + [ + 'setWrapOutputClass' => 'foobar', + 'setIsPrintable' => true, + ] + ], + 'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [ + [], + '*!*!*!*!*!wgRenderHashAppend!*!onPageRenderingHash', + [], + [ + 'wgRenderHashAppend' => '!wgRenderHashAppend', + 'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ], + ] + ], + ]; + } + + public static function onPageRenderingHash( &$confstr ) { + $confstr .= '!onPageRenderingHash'; + } + + public function testMatches() { + $popt1 = new ParserOptions(); + $popt2 = new ParserOptions(); + $this->assertTrue( $popt1->matches( $popt2 ) ); + + $popt1->enableLimitReport( true ); + $popt2->enableLimitReport( false ); + $this->assertTrue( $popt1->matches( $popt2 ) ); + + $popt2->setTidy( !$popt2->getTidy() ); + $this->assertFalse( $popt1->matches( $popt2 ) ); + } + +} -- 2.20.1