setLanguage( 'qqx' ); $differ->setLocalizer( $localizer ); TestingAccessWrapper::newFromObject( $differ )->haveMoveSupport = true; return $differ; } public static function provideRenderBatch() { return [ [ false ], [ true ] ]; } /** * @requires extension wikidiff2 * @dataProvider provideRenderBatch * @param bool $useMultiFormat */ public function testRenderBatch( $useMultiFormat ) { if ( !function_exists( 'wikidiff2_multi_format_diff' ) && $useMultiFormat ) { $this->markTestSkipped( 'Need wikidiff2 1.14.0+' ); } $oldText = 'foo'; $newText = 'bar'; $differ = new Wikidiff2TextDiffer( [ 'useMultiFormat' => $useMultiFormat ] ); // Should not need a MessageLocalizer $result = $differ->renderBatch( $oldText, $newText, [ 'table', 'inline' ] ); $this->assertSame( [ 'table' => TextDifferData::WIKIDIFF2_TABLE, 'inline' => TextDifferData::WIKIDIFF2_INLINE ], $result ); } public function testGetName() { $differ = new Wikidiff2TextDiffer( [] ); $this->assertSame( 'wikidiff2', $differ->getName() ); } public function testGetFormatContext() { $differ = new Wikidiff2TextDiffer( [] ); $this->assertSame( TextDiffer::CONTEXT_ROW, $differ->getFormatContext( 'table' ) ); } public static function provideGetTablePrefixes() { return [ [ 'table', 'class="mw-diff-inline-legend oo-ui-element-hidden".*\(diff-inline-tooltip-ins\)' ], [ 'inline', 'class="mw-diff-inline-legend".*\(diff-inline-tooltip-ins\)' ], ]; } /** * @dataProvider provideGetTablePrefixes * @param string $format * @param string $pattern */ public function testGetTablePrefixes( $format, $pattern ) { $differ = $this->createDiffer(); $result = $differ->getTablePrefixes( $format ); $this->assertMatchesRegularExpression( '{' . $pattern . '}s', $result[TextSlotDiffRenderer::INLINE_LEGEND_KEY] ); } public static function provideLocalize() { return [ 'normal table' => [ 'table', TextDifferData::WIKIDIFF2_TABLE, [], '