%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/extensions/Translate/tests/phpunit/ |
Current File : /www/varak.net/wiki.varak.net/extensions/Translate/tests/phpunit/TranslatablePageTest.php |
<?php /** * Unit tests for class TPSection * * @author Niklas Laxström * @license GPL-2.0-or-later * @file */ /** * Unit tests for class TPSection * @ingroup PageTranslation */ class TranslatablePageTest extends PHPUnit\Framework\TestCase { /** * @dataProvider provideTestSectionise */ public function testSectionise( $input, $pattern, $comment ) { $result = TranslatablePage::sectionise( $input ); $pattern = addcslashes( $pattern, '~' ); $this->assertRegExp( "~^$pattern$~", $result['template'], $comment ); } public static function provideTestSectionise() { // Ugly implicit assumption $ph = "\x7fUNIQ[a-z0-9]{8,16}-\d+"; $cases = []; $cases[] = [ 'Hello', "$ph", 'No surrounding whitespace', ]; $cases[] = [ "\nHello", "\n$ph", 'With surrounding whitespace', ]; $cases[] = [ "\nHello world\n\nBunny\n", "\n$ph\n\n$ph\n", 'Splitting at one empty line', ]; $cases[] = [ "First\n\n\n\n\nSecond\n\nThird", "$ph\n\n\n\n\n$ph\n\n$ph", 'Splitting with multiple empty lines', ]; return $cases; } /** * @dataProvider provideTestCleanupTags */ public function testCleanupTags( $input, $expected, $comment ) { $output = TranslatablePage::cleanupTags( $input ); $this->assertEquals( $expected, $output, $comment ); } public static function provideTestCleanupTags() { $cases = []; $cases[] = [ "== Hello ==\n</translate>", '== Hello ==', 'Unbalanced tag in a section preview', ]; $cases[] = [ "</translate><translate>", '', 'Unbalanced tags, no whitespace', ]; $cases[] = [ "1\n2<translate>3\n4</translate>5\n6", "1\n23\n45\n6", 'Unbalanced tags, non-removable whitespace', ]; $cases[] = [ "1<translate>\n\n</translate>2", '12', 'Unbalanced tags, removable whitespace', ]; $cases[] = [ '[[<tvar|wmf>Special:MyLanguage/Wikimedia Foundation</>|Wikimedia Foundation]].', '[[Special:MyLanguage/Wikimedia Foundation|Wikimedia Foundation]].', 'TVAR tag is collapsed', ]; $cases[] = [ 'You can use the <nowiki><translate></nowiki> tag.', 'You can use the <nowiki><translate></nowiki> tag.', 'Tag inside a nowiki is retained', ]; $cases[] = [ 'What if I <translate and </translate>.', 'What if I <translate and .', 'Broken tag is retained', ]; return $cases; } }