X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Flanguages%2Fclasses%2FLanguageSrTest.php;h=e81d537060d00d658a7cbae77158afb9d1005eb5;hb=9f2ffdfbd4c289446f2baf8a168cbe89fa122157;hp=b64fd679b5f3cbde66563b0a0c2faf18f1432ee4;hpb=2f885ee6b797e5a176ce7b270b674a04b5945b06;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/languages/classes/LanguageSrTest.php b/tests/phpunit/languages/classes/LanguageSrTest.php index b64fd679b5..8da760237a 100644 --- a/tests/phpunit/languages/classes/LanguageSrTest.php +++ b/tests/phpunit/languages/classes/LanguageSrTest.php @@ -16,8 +16,68 @@ * - Tests for LanguageConverter and Language should probably be separate.. */ -/** Tests for MediaWiki languages/LanguageSr.php */ +/** + * @covers LanguageSr + * @covers SrConverter + */ class LanguageSrTest extends LanguageClassesTestCase { + /** + * @covers Language::hasVariants + */ + public function testHasVariants() { + $this->assertTrue( $this->getLang()->hasVariants(), 'sr has variants' ); + } + + /** + * @covers Language::hasVariant + */ + public function testHasVariant() { + $langs = [ + 'sr' => $this->getLang(), + 'sr-ec' => Language::factory( 'sr-ec' ), + 'sr-cyrl' => Language::factory( 'sr-cyrl' ), + ]; + foreach ( $langs as $code => $l ) { + $p = $l->getParentLanguage(); + $this->assertTrue( $p !== null, 'parent language exists' ); + $this->assertEquals( 'sr', $p->getCode(), 'sr is parent language' ); + $this->assertTrue( $p instanceof LanguageSr, 'parent is LanguageSr' ); + // This is a valid variant of the base + $this->assertTrue( $p->hasVariant( $l->getCode() ) ); + // This test should be tweaked if/when sr-ec is renamed (T117845) + // to swap the roles of sr-ec and sr-Cyrl + $this->assertTrue( $l->hasVariant( 'sr-ec' ), 'sr-ec exists' ); + // note that sr-cyrl is an alias, not a (strict) variant name + foreach ( [ 'sr-EC', 'sr-Cyrl', 'sr-cyrl', 'sr-bogus' ] as $v ) { + $this->assertFalse( $l->hasVariant( $v ), "$v is not a variant of $code" ); + } + } + } + + /** + * @covers Language::hasVariant + */ + public function testHasVariantBogus() { + $langs = [ + // Note that case matters when calling Language::factory(); + // these are all bogus language codes + 'sr-EC' => Language::factory( 'sr-EC' ), + 'sr-Cyrl' => Language::factory( 'sr-Cyrl' ), + 'sr-bogus' => Language::factory( 'sr-bogus' ), + ]; + foreach ( $langs as $code => $l ) { + $p = $l->getParentLanguage(); + $this->assertTrue( $p === null, 'no parent for bogus language' ); + $this->assertFalse( $l instanceof LanguageSr, "$code is not sr" ); + $this->assertFalse( $this->getLang()->hasVariant( $code ), "$code is not a sr variant" ); + foreach ( [ 'sr', 'sr-ec', 'sr-EC', 'sr-Cyrl', 'sr-cyrl', 'sr-bogus' ] as $v ) { + if ( $v !== $code ) { + $this->assertFalse( $l->hasVariant( $v ), "no variant $v" ); + } + } + } + } + /** * @covers LanguageConverter::convertTo */ @@ -38,11 +98,11 @@ class LanguageSrTest extends LanguageClassesTestCase { public function testMixedConversions() { $this->assertCyrillic( 'шђчћжШЂЧЋЖ - šđčćž', - 'Mostly cyrillic characters' + 'Mostly Cyrillic characters' ); $this->assertLatin( 'šđč枊ĐČĆŽ - шђчћж', - 'Mostly latin characters' + 'Mostly Latin characters' ); } @@ -51,11 +111,11 @@ class LanguageSrTest extends LanguageClassesTestCase { */ public function testSameAmountOfLatinAndCyrillicGetConverted() { $this->assertConverted( - '4 latin: šđčć | 4 cyrillic: шђчћ', + '4 Latin: šđčć | 4 Cyrillic: шђчћ', 'sr-ec' ); $this->assertConverted( - '4 latin: šđčć | 4 cyrillic: шђчћ', + '4 Latin: šđčć | 4 Cyrillic: шђчћ', 'sr-el' ); } @@ -65,7 +125,7 @@ class LanguageSrTest extends LanguageClassesTestCase { * @covers LanguageConverter::convertTo */ public function testConversionToCyrillic() { - // A simple convertion of Latin to Cyrillic + // A simple conversion of Latin to Cyrillic $this->assertEquals( 'абвг', $this->convertToCyrillic( 'abvg' ) ); @@ -73,7 +133,7 @@ class LanguageSrTest extends LanguageClassesTestCase { $this->assertEquals( 'ljабnjвгdž', $this->convertToCyrillic( '-{lj}-ab-{nj}-vg-{dž}-' ) ); - // A simple convertion of Cyrillic to Cyrillic + // A simple conversion of Cyrillic to Cyrillic $this->assertEquals( 'абвг', $this->convertToCyrillic( 'абвг' ) ); @@ -107,11 +167,11 @@ class LanguageSrTest extends LanguageClassesTestCase { * @covers LanguageConverter::convertTo */ public function testConversionToLatin() { - // A simple convertion of Latin to Latin + // A simple conversion of Latin to Latin $this->assertEquals( 'abcd', $this->convertToLatin( 'abcd' ) ); - // A simple convertion of Cyrillic to Latin + // A simple conversion of Cyrillic to Latin $this->assertEquals( 'abcd', $this->convertToLatin( 'абцд' ) ); @@ -178,6 +238,7 @@ class LanguageSrTest extends LanguageClassesTestCase { } # #### HELPERS ##################################################### + /** *Wrapper to verify text stay the same after applying conversion * @param string $text Text to convert @@ -208,7 +269,7 @@ class LanguageSrTest extends LanguageClassesTestCase { /** * Verifiy the given Cyrillic text is not converted when using - * using the cyrillic variant and converted to Latin when using + * using the Cyrillic variant and converted to Latin when using * the Latin variant. * @param string $text Text to convert * @param string $msg Optional message