'', '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 ) ); } }