3 use Wikimedia\TestingAccessWrapper
;
4 use Wikimedia\ScopedCallback
;
6 class ParserOptionsTest
extends MediaWikiTestCase
{
9 * @dataProvider provideOptionsHash
10 * @param array $usedOptions Used options
11 * @param string $expect Expected value
12 * @param array $options Options to set
13 * @param array $globals Globals to set
15 public function testOptionsHash( $usedOptions, $expect, $options, $globals = [] ) {
19 'wgRenderHashAppend' => '',
22 $globals['wgHooks'] +
= [
23 'PageRenderingHash' => [],
25 $this->setMwGlobals( $globals );
27 $popt = new ParserOptions();
28 foreach ( $options as $setter => $value ) {
29 $popt->$setter( $value );
31 $this->assertSame( $expect, $popt->optionsHash( $usedOptions ) );
34 public static function provideOptionsHash() {
35 $used = [ 'wrapclass', 'editsection', 'printable' ];
38 'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
39 'Canonical options, used some options' => [ $used, '*!*!*!*!*', [] ],
40 'Used some options, non-default values' => [
42 '*!*!*!*!*!printable=1!wrapclass=foobar',
44 'setWrapOutputClass' => 'foobar',
45 'setIsPrintable' => true,
48 'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
50 '*!*!*!*!*!wgRenderHashAppend!*!onPageRenderingHash',
53 'wgRenderHashAppend' => '!wgRenderHashAppend',
54 'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__
. '::onPageRenderingHash' ] ] ],
60 public static function onPageRenderingHash( &$confstr ) {
61 $confstr .= '!onPageRenderingHash';
64 public function testMatches() {
65 $popt1 = new ParserOptions();
66 $popt2 = new ParserOptions();
67 $this->assertTrue( $popt1->matches( $popt2 ) );
69 $popt1->enableLimitReport( true );
70 $popt2->enableLimitReport( false );
71 $this->assertTrue( $popt1->matches( $popt2 ) );
73 $popt2->setTidy( !$popt2->getTidy() );
74 $this->assertFalse( $popt1->matches( $popt2 ) );