diff options
Diffstat (limited to 'www/wiki/tests/phpunit/languages/classes')
56 files changed, 3257 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageAmTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageAmTest.php new file mode 100644 index 00000000..a44cace4 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageAmTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageAm.php */ +class LanguageAmTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageArTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageArTest.php new file mode 100644 index 00000000..f3f5a3f1 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageArTest.php @@ -0,0 +1,89 @@ +<?php +/** + * Based on LanguagMlTest + * @file + */ + +/** + * @covers LanguageAr + */ +class LanguageArTest extends LanguageClassesTestCase { + /** + * @covers Language::formatNum + * @todo split into a test and a dataprovider + */ + public function testFormatNum() { + $this->assertEquals( '١٬٢٣٤٬٥٦٧', $this->getLang()->formatNum( '1234567' ) ); + $this->assertEquals( '-١٢٫٨٩', $this->getLang()->formatNum( -12.89 ) ); + } + + /** + * Mostly to test the raw ascii feature. + * @dataProvider providerSprintfDate + * @covers Language::sprintfDate + */ + public function testSprintfDate( $format, $date, $expected ) { + $this->assertEquals( $expected, $this->getLang()->sprintfDate( $format, $date ) ); + } + + public static function providerSprintfDate() { + return [ + [ + 'xg "vs" g', + '20120102030410', + 'يناير vs ٣' + ], + [ + 'xmY', + '20120102030410', + '١٤٣٣' + ], + [ + 'xnxmY', + '20120102030410', + '1433' + ], + [ + 'xN xmj xmn xN xmY', + '20120102030410', + ' 7 2 ١٤٣٣' + ], + ]; + } + + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'zero', 'one', 'two', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'zero', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'few', 9 ], + [ 'few', 110 ], + [ 'many', 11 ], + [ 'many', 15 ], + [ 'many', 99 ], + [ 'many', 9999 ], + [ 'other', 100 ], + [ 'other', 102 ], + [ 'other', 1000 ], + [ 'other', 1.7 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageArqTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageArqTest.php new file mode 100644 index 00000000..e6692d17 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageArqTest.php @@ -0,0 +1,26 @@ +<?php +/** + * Based on LanguageMlTest + * @author Joel Sahleen + * @copyright Copyright © 2014, Joel Sahleen + * @file + */ + +/** Tests for MediaWiki languages/LanguageArq.php */ +class LanguageArqTest extends LanguageClassesTestCase { + /** + * @dataProvider provideNumber + * @covers Language::formatNum + */ + public function testFormatNum( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->formatNum( $value ) ); + } + + public static function provideNumber() { + return [ + [ '1.234.567', '1234567' ], + [ '-12,89', -12.89 ], + ]; + } + +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageBeTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageBeTest.php new file mode 100644 index 00000000..de1adb7d --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageBeTest.php @@ -0,0 +1,42 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageBe.php */ +class LanguageBeTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 1 ], + [ 'many', 11 ], + [ 'one', 91 ], + [ 'one', 121 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'few', 334 ], + [ 'many', 5 ], + [ 'many', 15 ], + [ 'many', 120 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageBe_taraskTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageBe_taraskTest.php new file mode 100644 index 00000000..4f049cd1 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageBe_taraskTest.php @@ -0,0 +1,100 @@ +<?php + +// phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps +/** + * @covers LanguageBe_tarask + */ +class LanguageBe_taraskTest extends LanguageClassesTestCase { + // phpcs:enable + /** + * Make sure the language code we are given is indeed + * be-tarask. This is to ensure LanguageClassesTestCase + * does not give us the wrong language. + */ + public function testBeTaraskTestsUsesBeTaraskCode() { + $this->assertEquals( 'be-tarask', + $this->getLang()->getCode() + ); + } + + /** + * @see T25156 & r64981 + * @covers Language::commafy + */ + public function testSearchRightSingleQuotationMarkAsApostroph() { + $this->assertEquals( + "'", + $this->getLang()->normalizeForSearch( '’' ), + 'T25156: U+2019 conversion to U+0027' + ); + } + + /** + * @see T25156 & r64981 + * @covers Language::commafy + */ + public function testCommafy() { + $this->assertEquals( '1,234,567', $this->getLang()->commafy( '1234567' ) ); + $this->assertEquals( '12,345', $this->getLang()->commafy( '12345' ) ); + } + + /** + * @see T25156 & r64981 + * @covers Language::commafy + */ + public function testDoesNotCommafyFourDigitsNumber() { + $this->assertEquals( '1234', $this->getLang()->commafy( '1234' ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 1 ], + [ 'many', 11 ], + [ 'one', 91 ], + [ 'one', 121 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'few', 334 ], + [ 'many', 5 ], + [ 'many', 15 ], + [ 'many', 120 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ '1=one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 11 ], + [ 'other', 91 ], + [ 'other', 121 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageBhoTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageBhoTest.php new file mode 100644 index 00000000..a9aba202 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageBhoTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageBho.php */ +class LanguageBhoTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageBsTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageBsTest.php new file mode 100644 index 00000000..29b2ccf3 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageBsTest.php @@ -0,0 +1,46 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * Tests for Croatian (hrvatski) + * + * @covers LanguageBs + */ +class LanguageBsTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'one', 21 ], + [ 'few', 24 ], + [ 'other', 25 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageCrhTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageCrhTest.php new file mode 100644 index 00000000..7c99614e --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageCrhTest.php @@ -0,0 +1,92 @@ +<?php + +/** + * @covers LanguageCrh + * @covers CrhConverter + */ +class LanguageCrhTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + [ // general words, covering more of the alphabet + [ + 'crh' => 'рузгярнынъ ruzgârnıñ Париж Parij', + 'crh-cyrl' => 'рузгярнынъ рузгярнынъ Париж Париж', + 'crh-latn' => 'ruzgârnıñ ruzgârnıñ Parij Parij', + ], + 'рузгярнынъ ruzgârnıñ Париж Parij' + ], + [ // general words, covering more of the alphabet + [ + 'crh' => 'чёкюч çöküç элифбени elifbeni полициясы politsiyası', + 'crh-cyrl' => 'чёкюч чёкюч элифбени элифбени полициясы полициясы', + 'crh-latn' => 'çöküç çöküç elifbeni elifbeni politsiyası politsiyası', + ], + 'чёкюч çöküç элифбени elifbeni полициясы politsiyası' + ], + [ // general words, covering more of the alphabet + [ + 'crh' => 'хусусында hususında акъшамларны aqşamlarnı опькеленюв öpkelenüv', + 'crh-cyrl' => 'хусусында хусусында акъшамларны акъшамларны опькеленюв опькеленюв', + 'crh-latn' => 'hususında hususında aqşamlarnı aqşamlarnı öpkelenüv öpkelenüv', + ], + 'хусусында hususında акъшамларны aqşamlarnı опькеленюв öpkelenüv' + ], + [ // general words, covering more of the alphabet + [ + 'crh' => 'кулюмсиреди külümsiredi айтмайджагъым aytmaycağım козьяшсыз közyaşsız', + 'crh-cyrl' => 'кулюмсиреди кулюмсиреди айтмайджагъым айтмайджагъым козьяшсыз козьяшсыз', + 'crh-latn' => 'külümsiredi külümsiredi aytmaycağım aytmaycağım közyaşsız közyaşsız', + ], + 'кулюмсиреди külümsiredi айтмайджагъым aytmaycağım козьяшсыз közyaşsız' + ], + [ // exception words + [ + 'crh' => 'инструменталь instrumental гургуль gürgül тюшюнмемек tüşünmemek', + 'crh-cyrl' => 'инструменталь инструменталь гургуль гургуль тюшюнмемек тюшюнмемек', + 'crh-latn' => 'instrumental instrumental gürgül gürgül tüşünmemek tüşünmemek', + ], + 'инструменталь instrumental гургуль gürgül тюшюнмемек tüşünmemek' + ], + [ // recent problem words, part 1 + [ + 'crh' => 'künü куню sürgünligi сюргюнлиги özü озю etti этти', + 'crh-cyrl' => 'куню куню сюргюнлиги сюргюнлиги озю озю этти этти', + 'crh-latn' => 'künü künü sürgünligi sürgünligi özü özü etti etti', + ], + 'künü куню sürgünligi сюргюнлиги özü озю etti этти' + ], + [ // recent problem words, part 2 + [ + 'crh' => 'esas эсас dört дёрт keldi кельди', + 'crh-cyrl' => 'эсас эсас дёрт дёрт кельди кельди', + 'crh-latn' => 'esas esas dört dört keldi keldi', + ], + 'esas эсас dört дёрт keldi кельди' + ], + [ // multi part words + [ + 'crh' => 'эки юз eki yüz', + 'crh-cyrl' => 'эки юз эки юз', + 'crh-latn' => 'eki yüz eki yüz', + ], + 'эки юз eki yüz' + ], + [ // ALL CAPS, made up acronyms (not 100% sure these are correct) + [ + 'crh' => 'ÑAB QIC ĞUK COT НЪАБ КЪЫДж ГЪУК ДЖОТ CA ДЖА', + 'crh-cyrl' => 'НЪАБ КЪЫДж ГЪУК ДЖОТ НЪАБ КЪЫДж ГЪУК ДЖОТ ДЖА ДЖА', + 'crh-latn' => 'ÑAB QIC ĞUK COT ÑAB QIC ĞUK COT CA CA', + ], + 'ÑAB QIC ĞUK COT НЪАБ КЪЫДж ГЪУК ДЖОТ CA ДЖА' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageCsTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageCsTest.php new file mode 100644 index 00000000..2d38ee8d --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageCsTest.php @@ -0,0 +1,41 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/Languagecs.php */ +class LanguageCsTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'other', 25 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageCuTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageCuTest.php new file mode 100644 index 00000000..565a8856 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageCuTest.php @@ -0,0 +1,44 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageCu + */ +class LanguageCuTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'one', 11 ], + [ 'other', 20 ], + [ 'two', 22 ], + [ 'few', 223 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageCyTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageCyTest.php new file mode 100644 index 00000000..bd078722 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageCyTest.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageCy.php */ +class LanguageCyTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'zero', 'one', 'two', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'zero', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'many', 6 ], + [ 'other', 4 ], + [ 'other', 5 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'other', 22 ], + [ 'other', 223 ], + [ 'other', 200.00 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageDsbTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageDsbTest.php new file mode 100644 index 00000000..877a70cd --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageDsbTest.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageDsb + */ +class LanguageDsbTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'one', 101 ], + [ 'one', 90001 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'few', 203 ], + [ 'few', 4 ], + [ 'other', 99 ], + [ 'other', 555 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageFrTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageFrTest.php new file mode 100644 index 00000000..af6893ae --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageFrTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageFr.php */ +class LanguageFrTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageGaTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageGaTest.php new file mode 100644 index 00000000..2ef5edb2 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageGaTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageGa.php */ +class LanguageGaTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageGanTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageGanTest.php new file mode 100644 index 00000000..c5d9e5e6 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageGanTest.php @@ -0,0 +1,38 @@ +<?php + +/** + * @covers LanguageGan + * @covers GanConverter + */ +class LanguageGanTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + // zh2Hans + [ + [ + 'gan' => '㑯', + 'gan-hans' => '㑔', + 'gan-hant' => '㑯', + ], + '㑯' + ], + // zh2Hant + [ + [ + 'gan' => '㐷', + 'gan-hans' => '㐷', + 'gan-hant' => '傌', + ], + '㐷' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageGdTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageGdTest.php new file mode 100644 index 00000000..4be4fded --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageGdTest.php @@ -0,0 +1,53 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012-2013, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageGd.php */ +class LanguageGdTest extends LanguageClassesTestCase { + /** + * @dataProvider providerPlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providerPlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'one', 11 ], + [ 'two', 12 ], + [ 'few', 3 ], + [ 'few', 19 ], + [ 'other', 200 ], + ]; + } + + /** + * @dataProvider providerPluralExplicit + * @covers Language::convertPlural + */ + public function testExplicitPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other', '11=Form11', '12=Form12' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providerPluralExplicit() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'Form11', 11 ], + [ 'Form12', 12 ], + [ 'few', 3 ], + [ 'few', 19 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageGvTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageGvTest.php new file mode 100644 index 00000000..20e47867 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageGvTest.php @@ -0,0 +1,44 @@ +<?php +/** + * Test for Manx (Gaelg) language + * + * @author Santhosh Thottingal + * @copyright Copyright © 2013, Santhosh Thottingal + * @file + */ + +class LanguageGvTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'few', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'other', 3 ], + [ 'few', 20 ], + [ 'one', 21 ], + [ 'two', 22 ], + [ 'other', 23 ], + [ 'other', 50 ], + [ 'few', 60 ], + [ 'few', 80 ], + [ 'few', 100 ] + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHeTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHeTest.php new file mode 100644 index 00000000..c1b774af --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHeTest.php @@ -0,0 +1,132 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki Hebrew grammar transformation handling */ +class LanguageHeTest extends LanguageClassesTestCase { + /** + * The most common usage for the plural forms is two forms, + * for singular and plural. In this case, the second form + * is technically dual, but in practice it's used as plural. + * In some cases, usually with expressions of time, three forms + * are needed - singular, dual and plural. + * CLDR also specifies a fourth form for multiples of 10, + * which is very rare. It also has a mistake, because + * the number 10 itself is supposed to be just plural, + * so currently it's overridden in MediaWiki. + */ + + // @todo the below test*PluralForms test methods can be refactored + // to use a single test method and data provider.. + + /** + * @dataProvider provideTwoPluralForms + * @covers Language::convertPlural + */ + public function testTwoPluralForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider provideThreePluralForms + * @covers Language::convertPlural + */ + public function testThreePluralForms( $result, $value ) { + $forms = [ 'one', 'two', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider provideFourPluralForms + * @covers Language::convertPlural + */ + public function testFourPluralForms( $result, $value ) { + $forms = [ 'one', 'two', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider provideFourPluralForms + * @covers Language::convertPlural + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function provideTwoPluralForms() { + return [ + [ 'other', 0 ], // Zero - plural + [ 'one', 1 ], // Singular + [ 'other', 2 ], // No third form provided, use it as plural + [ 'other', 3 ], // Plural - other + [ 'other', 10 ], // No fourth form provided, use it as plural + [ 'other', 20 ], // No fourth form provided, use it as plural + ]; + } + + public static function provideThreePluralForms() { + return [ + [ 'other', 0 ], // Zero - plural + [ 'one', 1 ], // Singular + [ 'two', 2 ], // Dual + [ 'other', 3 ], // Plural - other + [ 'other', 10 ], // No fourth form provided, use it as plural + [ 'other', 20 ], // No fourth form provided, use it as plural + ]; + } + + public static function provideFourPluralForms() { + return [ + [ 'other', 0 ], // Zero - plural + [ 'one', 1 ], // Singular + [ 'two', 2 ], // Dual + [ 'other', 3 ], // Plural - other + [ 'other', 10 ], // 10 is supposed to be plural (other), not "many" + [ 'many', 20 ], // Fourth form provided - rare, but supported by CLDR + ]; + } + + /** + * @dataProvider provideGrammar + * @covers Language::convertGrammar + */ + public function testGrammar( $result, $word, $case ) { + $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) ); + } + + // The comments in the beginning of the line help avoid RTL problems + // with text editors. + public static function provideGrammar() { + return [ + [ + /* result */'וויקיפדיה', + /* word */'ויקיפדיה', + /* case */'תחילית', + ], + [ + /* result */'וולפגנג', + /* word */'וולפגנג', + /* case */'prefixed', + ], + [ + /* result */'קובץ', + /* word */'הקובץ', + /* case */'תחילית', + ], + [ + /* result */'־Wikipedia', + /* word */'Wikipedia', + /* case */'תחילית', + ], + [ + /* result */'־1995', + /* word */'1995', + /* case */'תחילית', + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHiTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHiTest.php new file mode 100644 index 00000000..72c75757 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHiTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageHi.php */ +class LanguageHiTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHrTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHrTest.php new file mode 100644 index 00000000..746e713e --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHrTest.php @@ -0,0 +1,42 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageHr.php */ +class LanguageHrTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'one', 21 ], + [ 'few', 24 ], + [ 'other', 25 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHsbTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHsbTest.php new file mode 100644 index 00000000..0841f6f9 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHsbTest.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageHsb + */ +class LanguageHsbTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'one', 101 ], + [ 'one', 90001 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'few', 203 ], + [ 'few', 4 ], + [ 'other', 99 ], + [ 'other', 555 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHuTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHuTest.php new file mode 100644 index 00000000..a1925bdf --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHuTest.php @@ -0,0 +1,37 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageHu + */ +class LanguageHuTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageHyTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageHyTest.php new file mode 100644 index 00000000..b4936154 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageHyTest.php @@ -0,0 +1,39 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * Tests for Armenian (Հայերեն) + * + * @covers LanguageHy + */ +class LanguageHyTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageIuTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageIuTest.php new file mode 100644 index 00000000..01d97fc0 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageIuTest.php @@ -0,0 +1,38 @@ +<?php + +/** + * @covers LanguageIu + * @covers IuConverter + */ +class LanguageIuTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + // ike-cans + [ + [ + 'ike-cans' => 'ᐴ', + 'ike-latn' => 'PUU', + 'iu' => 'PUU', + ], + 'PUU' + ], + // ike-latn + [ + [ + 'ike-cans' => 'ᐴ', + 'ike-latn' => 'puu', + 'iu' => 'ᐴ', + ], + 'ᐴ' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageKkTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageKkTest.php new file mode 100644 index 00000000..f21950e0 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageKkTest.php @@ -0,0 +1,33 @@ +<?php + +/** + * @covers LanguageKk + * @covers LanguageKk_cyrl + * @covers KkConverter + */ +class LanguageKkTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + [ + [ + 'kk' => 'Адамдарға ақыл-парасат, ар-ождан берілген', + 'kk-cyrl' => 'Адамдарға ақыл-парасат, ар-ождан берілген', + 'kk-latn' => 'Adamdarğa aqıl-parasat, ar-ojdan berilgen', + 'kk-arab' => 'ادامدارعا اقىل-پاراسات، ار-وجدان بەرىلگەن', + 'kk-kz' => 'Адамдарға ақыл-парасат, ар-ождан берілген', + 'kk-tr' => 'Adamdarğa aqıl-parasat, ar-ojdan berilgen', + 'kk-cn' => 'ادامدارعا اقىل-پاراسات، ار-وجدان بەرىلگەن' + ], + 'Адамдарға ақыл-парасат, ар-ождан берілген' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageKshTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageKshTest.php new file mode 100644 index 00000000..6419e281 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageKshTest.php @@ -0,0 +1,37 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageKsh + */ +class LanguageKshTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other', 'zero' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'zero', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageKuTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageKuTest.php new file mode 100644 index 00000000..db693088 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageKuTest.php @@ -0,0 +1,44 @@ +<?php + +/** + * @covers LanguageKu + * @covers KuConverter + */ +class LanguageKuTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + [ + [ + 'ku' => '١', + 'ku-arab' => '١', + 'ku-latn' => '1', + ], + '١' + ], + [ + [ + 'ku' => 'Wîkîpediya ensîklopediyeke azad bi rengê wîkî ye.', + 'ku-arab' => 'ویکیپەدیائە نسیکلۆپەدیەکەئا زاد ب رەنگێ ویکی یە.', + 'ku-latn' => 'Wîkîpediya ensîklopediyeke azad bi rengê wîkî ye.', + ], + 'Wîkîpediya ensîklopediyeke azad bi rengê wîkî ye.' + ], + [ + [ + 'ku' => 'ویکیپەدیا ەنسیکلۆپەدیەکەئا زاد ب رەنگێ ویکی یە.', + 'ku-arab' => 'ویکیپەدیا ەنسیکلۆپەدیەکەئا زاد ب رەنگێ ویکی یە.', + 'ku-latn' => 'wîkîpedîa ensîklopedîekea zad b rengê wîkî îe.', + ], + 'ویکیپەدیا ەنسیکلۆپەدیەکەئا زاد ب رەنگێ ویکی یە.' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageLnTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageLnTest.php new file mode 100644 index 00000000..34bd1791 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageLnTest.php @@ -0,0 +1,35 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageLn.php */ +class LanguageLnTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageLtTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageLtTest.php new file mode 100644 index 00000000..dc7ef454 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageLtTest.php @@ -0,0 +1,63 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageLt.php */ +class LanguageLtTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 9 ], + [ 'other', 10 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'one', 21 ], + [ 'few', 32 ], + [ 'one', 41 ], + [ 'one', 40001 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testOneFewPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + // This fails for 21, but not sure why. + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 15 ], + [ 'other', 20 ], + [ 'one', 21 ], + [ 'other', 22 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageLvTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageLvTest.php new file mode 100644 index 00000000..9827c68b --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageLvTest.php @@ -0,0 +1,44 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for Latvian */ +class LanguageLvTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'zero', 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'zero', 0 ], + [ 'one', 1 ], + [ 'zero', 11 ], + [ 'one', 21 ], + [ 'zero', 411 ], + [ 'other', 2 ], + [ 'other', 9 ], + [ 'zero', 12 ], + [ 'other', 12.345 ], + [ 'zero', 20 ], + [ 'other', 22 ], + [ 'one', 31 ], + [ 'zero', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageMgTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageMgTest.php new file mode 100644 index 00000000..7a84c071 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageMgTest.php @@ -0,0 +1,36 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageMg.php */ +class LanguageMgTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 200 ], + [ 'other', 123.3434 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageMkTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageMkTest.php new file mode 100644 index 00000000..6469a063 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageMkTest.php @@ -0,0 +1,40 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for македонски/Macedonian */ +class LanguageMkTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'one', 11 ], + [ 'one', 21 ], + [ 'one', 411 ], + [ 'other', 12.345 ], + [ 'other', 20 ], + [ 'one', 31 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageMlTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageMlTest.php new file mode 100644 index 00000000..673b5c77 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageMlTest.php @@ -0,0 +1,40 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2011, Santhosh Thottingal + * @file + */ + +/** + * @covers LanguageMl + */ +class LanguageMlTest extends LanguageClassesTestCase { + + /** + * @dataProvider providerFormatNum + * T31495 + * @covers Language::formatNum + */ + public function testFormatNum( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->formatNum( $value ) ); + } + + public static function providerFormatNum() { + return [ + [ '12,34,567', '1234567' ], + [ '12,345', '12345' ], + [ '1', '1' ], + [ '123', '123' ], + [ '1,234', '1234' ], + [ '12,345.56', '12345.56' ], + [ '12,34,56,79,81,23,45,678', '12345679812345678' ], + [ '.12345', '.12345' ], + [ '-12,00,000', '-1200000' ], + [ '-98', '-98' ], + [ '-98', -98 ], + [ '-1,23,45,678', -12345678 ], + [ '', '' ], + [ '', null ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageMoTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageMoTest.php new file mode 100644 index 00000000..d11bad2f --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageMoTest.php @@ -0,0 +1,45 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageMo.php */ +class LanguageMoTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'few', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 19 ], + [ 'other', 20 ], + [ 'other', 99 ], + [ 'other', 100 ], + [ 'few', 101 ], + [ 'few', 119 ], + [ 'other', 120 ], + [ 'other', 200 ], + [ 'few', 201 ], + [ 'few', 219 ], + [ 'other', 220 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageMtTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageMtTest.php new file mode 100644 index 00000000..d8a0d7a1 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageMtTest.php @@ -0,0 +1,77 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageMt.php */ +class LanguageMtTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'few', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 10 ], + [ 'many', 11 ], + [ 'many', 19 ], + [ 'other', 20 ], + [ 'other', 99 ], + [ 'other', 100 ], + [ 'other', 101 ], + [ 'few', 102 ], + [ 'few', 110 ], + [ 'many', 111 ], + [ 'many', 119 ], + [ 'other', 120 ], + [ 'other', 201 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 10 ], + [ 'other', 11 ], + [ 'other', 19 ], + [ 'other', 20 ], + [ 'other', 99 ], + [ 'other', 100 ], + [ 'other', 101 ], + [ 'other', 102 ], + [ 'other', 110 ], + [ 'other', 111 ], + [ 'other', 119 ], + [ 'other', 120 ], + [ 'other', 201 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageNlTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageNlTest.php new file mode 100644 index 00000000..26bd691a --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageNlTest.php @@ -0,0 +1,24 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2011, Santhosh Thottingal + * @file + */ + +/** Tests for MediaWiki languages/LanguageNl.php */ +class LanguageNlTest extends LanguageClassesTestCase { + + /** + * @covers Language::formatNum + * @todo split into a test and a dataprovider + */ + public function testFormatNum() { + $this->assertEquals( '1.234.567', $this->getLang()->formatNum( '1234567' ) ); + $this->assertEquals( '12.345', $this->getLang()->formatNum( '12345' ) ); + $this->assertEquals( '1', $this->getLang()->formatNum( '1' ) ); + $this->assertEquals( '123', $this->getLang()->formatNum( '123' ) ); + $this->assertEquals( '1.234', $this->getLang()->formatNum( '1234' ) ); + $this->assertEquals( '12.345,56', $this->getLang()->formatNum( '12345.56' ) ); + $this->assertEquals( ',1234556', $this->getLang()->formatNum( '.1234556' ) ); + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageNsoTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageNsoTest.php new file mode 100644 index 00000000..f1783431 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageNsoTest.php @@ -0,0 +1,34 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageNso.php */ +class LanguageNsoTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguagePlTest.php b/www/wiki/tests/phpunit/languages/classes/LanguagePlTest.php new file mode 100644 index 00000000..14877290 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguagePlTest.php @@ -0,0 +1,104 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguagePl.php */ +class LanguagePlTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'many', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'many', 5 ], + [ 'many', 9 ], + [ 'many', 10 ], + [ 'many', 11 ], + [ 'many', 21 ], + [ 'few', 22 ], + [ 'few', 23 ], + [ 'few', 24 ], + [ 'many', 25 ], + [ 'many', 200 ], + [ 'many', 201 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 3 ], + [ 'other', 4 ], + [ 'other', 5 ], + [ 'other', 9 ], + [ 'other', 10 ], + [ 'other', 11 ], + [ 'other', 21 ], + [ 'other', 22 ], + [ 'other', 23 ], + [ 'other', 24 ], + [ 'other', 25 ], + [ 'other', 200 ], + [ 'other', 201 ], + ]; + } + + /** + * @covers Language::commafy() + * @dataProvider provideCommafyData + */ + public function testCommafy( $number, $numbersWithCommas ) { + $this->assertEquals( + $numbersWithCommas, + $this->getLang()->commafy( $number ), + "commafy('$number')" + ); + } + + public static function provideCommafyData() { + // Note that commafy() always uses English separators (',' and '.') instead of + // Polish (' ' and ','). There is another function that converts them later. + return [ + [ 1000, '1000' ], + [ 10000, '10,000' ], + [ 1000.0001, '1000.0001' ], + [ 10000.0001, '10,000.0001' ], + [ -1000, '-1000' ], + [ -10000, '-10,000' ], + [ -1000.0001, '-1000.0001' ], + [ -10000.0001, '-10,000.0001' ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageRoTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageRoTest.php new file mode 100644 index 00000000..bbe26f63 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageRoTest.php @@ -0,0 +1,45 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageRo.php */ +class LanguageRoTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'few', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 19 ], + [ 'other', 20 ], + [ 'other', 99 ], + [ 'other', 100 ], + [ 'few', 101 ], + [ 'few', 119 ], + [ 'other', 120 ], + [ 'other', 200 ], + [ 'few', 201 ], + [ 'few', 219 ], + [ 'other', 220 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageRuTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageRuTest.php new file mode 100644 index 00000000..a34c03fd --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageRuTest.php @@ -0,0 +1,189 @@ +<?php +/** + * @author Amir E. Aharoni + * based on LanguageBe_tarask.php + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +class LanguageRuTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * Test explicit plural forms - n=FormN forms + * @covers Language::convertPlural + */ + public function testExplicitPlural() { + $forms = [ 'one', 'few', 'many', 'other', '12=dozen' ]; + $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) ); + $forms = [ 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' ]; + $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 1 ], + [ 'many', 11 ], + [ 'one', 91 ], + [ 'one', 121 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'few', 334 ], + [ 'many', 5 ], + [ 'many', 15 ], + [ 'many', 120 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ '1=one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'one', 1 ], + [ 'other', 11 ], + [ 'other', 91 ], + [ 'other', 121 ], + ]; + } + + /** + * @dataProvider providerGrammar + * @covers Language::convertGrammar + */ + public function testGrammar( $result, $word, $case ) { + $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) ); + } + + public static function providerGrammar() { + return [ + [ + 'Википедии', + 'Википедия', + 'genitive', + ], + [ + 'Викитеки', + 'Викитека', + 'genitive', + ], + [ + 'Викитеке', + 'Викитека', + 'prepositional', + ], + [ + 'Викисклада', + 'Викисклад', + 'genitive', + ], + [ + 'Викиверситета', + 'Викиверситет', + 'genitive', + ], + [ + 'Викискладе', + 'Викисклад', + 'prepositional', + ], + [ + 'Викиданных', + 'Викиданные', + 'prepositional', + ], + [ + 'Викиверситете', + 'Викиверситет', + 'prepositional', + ], + [ + 'русского', + 'русский', + 'languagegen', + ], + [ + 'немецкого', + 'немецкий', + 'languagegen', + ], + [ + 'иврита', + 'иврит', + 'languagegen', + ], + [ + 'эсперанто', + 'эсперанто', + 'languagegen', + ], + [ + 'русском', + 'русский', + 'languageprep', + ], + [ + 'немецком', + 'немецкий', + 'languageprep', + ], + [ + 'идише', + 'идиш', + 'languageprep', + ], + [ + 'эсперанто', + 'эсперанто', + 'languageprep', + ], + [ + 'по-русски', + 'русский', + 'languageadverb', + ], + [ + 'по-немецки', + 'немецкий', + 'languageadverb', + ], + [ + 'на иврите', + 'иврит', + 'languageadverb', + ], + [ + 'на эсперанто', + 'эсперанто', + 'languageadverb', + ], + [ + 'на языке гуарани', + 'гуарани', + 'languageadverb', + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSeTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSeTest.php new file mode 100644 index 00000000..b0da3983 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSeTest.php @@ -0,0 +1,53 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageSe.php */ +class LanguageSeTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'other', 3 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 3 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSgsTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSgsTest.php new file mode 100644 index 00000000..7721433d --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSgsTest.php @@ -0,0 +1,71 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for Samogitian */ +class LanguageSgsTest extends LanguageClassesTestCase { + /** + * @dataProvider providePluralAllForms + * @covers Language::convertPlural + */ + public function testPluralAllForms( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePluralAllForms + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePluralAllForms() { + return [ + [ 'few', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'other', 3 ], + [ 'few', 10 ], + [ 'few', 11 ], + [ 'few', 12 ], + [ 'few', 19 ], + [ 'other', 20 ], + [ 'few', 100 ], + [ 'one', 101 ], + [ 'few', 111 ], + [ 'few', 112 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 3 ], + [ 'other', 10 ], + [ 'other', 11 ], + [ 'other', 12 ], + [ 'other', 19 ], + [ 'other', 20 ], + [ 'other', 100 ], + [ 'one', 101 ], + [ 'other', 111 ], + [ 'other', 112 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageShTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageShTest.php new file mode 100644 index 00000000..2a669178 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageShTest.php @@ -0,0 +1,42 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for srpskohrvatski / српскохрватски / Serbocroatian */ +class LanguageShTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 10 ], + [ 'other', 11 ], + [ 'other', 12 ], + [ 'one', 101 ], + [ 'few', 102 ], + [ 'other', 111 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageShiTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageShiTest.php new file mode 100644 index 00000000..1d0f8635 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageShiTest.php @@ -0,0 +1,36 @@ +<?php + +/** + * @covers LanguageShi + * @covers ShiConverter + */ +class LanguageShiTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + [ + [ + 'shi' => 'AƔ', + 'shi-tfng' => 'ⴰⵖ', + 'shi-latn' => 'AƔ', + ], + 'AƔ' + ], + [ + [ + 'shi' => 'ⴰⵖ', + 'shi-tfng' => 'ⴰⵖ', + 'shi-latn' => 'aɣ', + ], + 'ⴰⵖ' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSkTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSkTest.php new file mode 100644 index 00000000..dd9a9ab1 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSkTest.php @@ -0,0 +1,42 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Amir E. Aharoni + * based on LanguageSkTest.php + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageSk.php */ +class LanguageSkTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 11 ], + [ 'other', 20 ], + [ 'other', 25 ], + [ 'other', 200 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSlTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSlTest.php new file mode 100644 index 00000000..50100ce7 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSlTest.php @@ -0,0 +1,46 @@ +<?php +/** + * @author Santhosh Thottingal + * @copyright Copyright © 2012, Amir E. Aharoni + * based on LanguageSkTest.php + * @file + */ + +/** + * @covers LanguageSl + */ +class LanguageSlTest extends LanguageClassesTestCase { + /** + * @dataProvider providerPlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providerPlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providerPlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'other', 5 ], + [ 'other', 99 ], + [ 'other', 100 ], + [ 'one', 101 ], + [ 'two', 102 ], + [ 'few', 103 ], + [ 'one', 201 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSmaTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSmaTest.php new file mode 100644 index 00000000..6b859943 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSmaTest.php @@ -0,0 +1,53 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageSma.php */ +class LanguageSmaTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'two', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'two', 2 ], + [ 'other', 3 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'other', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + [ 'other', 3 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageSrTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageSrTest.php new file mode 100644 index 00000000..e81d5370 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageSrTest.php @@ -0,0 +1,252 @@ +<?php +/** + * PHPUnit tests for the Serbian language. + * The language can be represented using two scripts: + * - Latin (SR_el) + * - Cyrillic (SR_ec) + * Both representations seems to be bijective, hence MediaWiki can convert + * from one script to the other. + * + * @author Antoine Musso <hashar at free dot fr> + * @copyright Copyright © 2011, Antoine Musso <hashar at free dot fr> + * @file + * + * @todo methods in test class should be tidied: + * - Should be split into separate test methods and data providers + * - Tests for LanguageConverter and Language should probably be separate.. + */ + +/** + * @covers LanguageSr + * @covers SrConverter + */ +class LanguageSrTest extends LanguageClassesTestCase { + /** + * @covers LanguageConverter::convertTo + */ + public function testEasyConversions() { + $this->assertCyrillic( + 'шђчћжШЂЧЋЖ', + 'Cyrillic guessing characters' + ); + $this->assertLatin( + 'šđč枊ĐČĆŽ', + 'Latin guessing characters' + ); + } + + /** + * @covers LanguageConverter::convertTo + */ + public function testMixedConversions() { + $this->assertCyrillic( + 'шђчћжШЂЧЋЖ - šđčćž', + 'Mostly cyrillic characters' + ); + $this->assertLatin( + 'šđč枊ĐČĆŽ - шђчћж', + 'Mostly latin characters' + ); + } + + /** + * @covers LanguageConverter::convertTo + */ + public function testSameAmountOfLatinAndCyrillicGetConverted() { + $this->assertConverted( + '4 latin: šđčć | 4 cyrillic: шђчћ', + 'sr-ec' + ); + $this->assertConverted( + '4 latin: šđčć | 4 cyrillic: шђчћ', + 'sr-el' + ); + } + + /** + * @author Nikola Smolenski + * @covers LanguageConverter::convertTo + */ + public function testConversionToCyrillic() { + // A simple convertion of Latin to Cyrillic + $this->assertEquals( 'абвг', + $this->convertToCyrillic( 'abvg' ) + ); + // Same as above, but assert that -{}-s must be removed and not converted + $this->assertEquals( 'ljабnjвгdž', + $this->convertToCyrillic( '-{lj}-ab-{nj}-vg-{dž}-' ) + ); + // A simple convertion of Cyrillic to Cyrillic + $this->assertEquals( 'абвг', + $this->convertToCyrillic( 'абвг' ) + ); + // Same as above, but assert that -{}-s must be removed and not converted + $this->assertEquals( 'ljабnjвгdž', + $this->convertToCyrillic( '-{lj}-аб-{nj}-вг-{dž}-' ) + ); + // This text has some Latin, but is recognized as Cyrillic, so it should not be converted + $this->assertEquals( 'abvgшђжчћ', + $this->convertToCyrillic( 'abvgшђжчћ' ) + ); + // Same as above, but assert that -{}-s must be removed + $this->assertEquals( 'љabvgњшђжчћџ', + $this->convertToCyrillic( '-{љ}-abvg-{њ}-шђжчћ-{џ}-' ) + ); + // This text has some Cyrillic, but is recognized as Latin, so it should be converted + $this->assertEquals( 'абвгшђжчћ', + $this->convertToCyrillic( 'абвгšđžčć' ) + ); + // Same as above, but assert that -{}-s must be removed and not converted + $this->assertEquals( 'ljабвгnjшђжчћdž', + $this->convertToCyrillic( '-{lj}-абвг-{nj}-šđžčć-{dž}-' ) + ); + // Roman numerals are not converted + $this->assertEquals( 'а I б II в III г IV шђжчћ', + $this->convertToCyrillic( 'a I b II v III g IV šđžčć' ) + ); + } + + /** + * @covers LanguageConverter::convertTo + */ + public function testConversionToLatin() { + // A simple convertion of Latin to Latin + $this->assertEquals( 'abcd', + $this->convertToLatin( 'abcd' ) + ); + // A simple convertion of Cyrillic to Latin + $this->assertEquals( 'abcd', + $this->convertToLatin( 'абцд' ) + ); + // This text has some Latin, but is recognized as Cyrillic, so it should be converted + $this->assertEquals( 'abcdšđžčć', + $this->convertToLatin( 'abcdшђжчћ' ) + ); + // This text has some Cyrillic, but is recognized as Latin, so it should not be converted + $this->assertEquals( 'абцдšđžčć', + $this->convertToLatin( 'абцдšđžčć' ) + ); + } + + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 1 ], + [ 'other', 11 ], + [ 'one', 91 ], + [ 'one', 121 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'few', 334 ], + [ 'other', 5 ], + [ 'other', 15 ], + [ 'other', 120 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'one', 1 ], + [ 'other', 11 ], + [ 'other', 4 ], + [ 'one', 91 ], + [ 'one', 121 ], + ]; + } + + # #### HELPERS ##################################################### + /** + *Wrapper to verify text stay the same after applying conversion + * @param string $text Text to convert + * @param string $variant Language variant 'sr-ec' or 'sr-el' + * @param string $msg Optional message + */ + protected function assertUnConverted( $text, $variant, $msg = '' ) { + $this->assertEquals( + $text, + $this->convertTo( $text, $variant ), + $msg + ); + } + + /** + * Wrapper to verify a text is different once converted to a variant. + * @param string $text Text to convert + * @param string $variant Language variant 'sr-ec' or 'sr-el' + * @param string $msg Optional message + */ + protected function assertConverted( $text, $variant, $msg = '' ) { + $this->assertNotEquals( + $text, + $this->convertTo( $text, $variant ), + $msg + ); + } + + /** + * Verifiy the given Cyrillic text is not converted 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 + */ + protected function assertCyrillic( $text, $msg = '' ) { + $this->assertUnConverted( $text, 'sr-ec', $msg ); + $this->assertConverted( $text, 'sr-el', $msg ); + } + + /** + * Verifiy the given Latin text is not converted when using + * using the Latin variant and converted to Cyrillic when using + * the Cyrillic variant. + * @param string $text Text to convert + * @param string $msg Optional message + */ + protected function assertLatin( $text, $msg = '' ) { + $this->assertUnConverted( $text, 'sr-el', $msg ); + $this->assertConverted( $text, 'sr-ec', $msg ); + } + + /** Wrapper for converter::convertTo() method*/ + protected function convertTo( $text, $variant ) { + return $this->getLang() + ->mConverter + ->convertTo( + $text, $variant + ); + } + + protected function convertToCyrillic( $text ) { + return $this->convertTo( $text, 'sr-ec' ); + } + + protected function convertToLatin( $text ) { + return $this->convertTo( $text, 'sr-el' ); + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageTgTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageTgTest.php new file mode 100644 index 00000000..89697675 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageTgTest.php @@ -0,0 +1,34 @@ +<?php + +/** + * @covers LanguageTg + * @covers TgConverter + */ +class LanguageTgTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + [ + [ + 'tg' => 'г', + 'tg-latn' => 'g', + ], + 'г' + ], + [ + [ + 'tg' => 'g', + 'tg-latn' => 'g', + ], + 'g' + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageTiTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageTiTest.php new file mode 100644 index 00000000..66f11848 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageTiTest.php @@ -0,0 +1,34 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageTi.php */ +class LanguageTiTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageTlTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageTlTest.php new file mode 100644 index 00000000..09fef2da --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageTlTest.php @@ -0,0 +1,36 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** Tests for MediaWiki languages/classes/LanguageTl.php */ +class LanguageTlTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'one', 2 ], + [ 'other', 4 ], + [ 'other', 6 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageTrTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageTrTest.php new file mode 100644 index 00000000..3ddf2d03 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageTrTest.php @@ -0,0 +1,63 @@ +<?php +/** + * @author Antoine Musso + * @copyright Copyright © 2011, Antoine Musso + * @file + */ + +/** + * @covers LanguageTr + */ +class LanguageTrTest extends LanguageClassesTestCase { + + /** + * See T30040 + * Credits to irc://irc.freenode.net/wikipedia-tr users: + * - berm + * - []LuCkY[] + * - Emperyan + * @see https://en.wikipedia.org/wiki/Dotted_and_dotless_I + * @dataProvider provideDottedAndDotlessI + * @covers Language::ucfirst + * @covers Language::lcfirst + */ + public function testDottedAndDotlessI( $func, $input, $inputCase, $expected ) { + if ( $func == 'ucfirst' ) { + $res = $this->getLang()->ucfirst( $input ); + } elseif ( $func == 'lcfirst' ) { + $res = $this->getLang()->lcfirst( $input ); + } else { + throw new MWException( __METHOD__ . " given an invalid function name '$func'" ); + } + + $msg = "Converting $inputCase case '$input' with $func should give '$expected'"; + + $this->assertEquals( $expected, $res, $msg ); + } + + public static function provideDottedAndDotlessI() { + return [ + # function, input, input case, expected + # Case changed: + [ 'ucfirst', 'ı', 'lower', 'I' ], + [ 'ucfirst', 'i', 'lower', 'İ' ], + [ 'lcfirst', 'I', 'upper', 'ı' ], + [ 'lcfirst', 'İ', 'upper', 'i' ], + + # Already using the correct case + [ 'ucfirst', 'I', 'upper', 'I' ], + [ 'ucfirst', 'İ', 'upper', 'İ' ], + [ 'lcfirst', 'ı', 'lower', 'ı' ], + [ 'lcfirst', 'i', 'lower', 'i' ], + + # A real example taken from T30040 using + # https://tr.wikipedia.org/wiki/%C4%B0Phone + [ 'lcfirst', 'iPhone', 'lower', 'iPhone' ], + + # next case is valid in Turkish but are different words if we + # consider IPhone is English! + [ 'lcfirst', 'IPhone', 'upper', 'ıPhone' ], + + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageUkTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageUkTest.php new file mode 100644 index 00000000..0ccebbe2 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageUkTest.php @@ -0,0 +1,109 @@ +<?php +/** + * @author Amir E. Aharoni + * based on LanguageBe_tarask.php + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +class LanguageUkTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'few', 'many', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * Test explicit plural forms - n=FormN forms + * @covers Language::convertPlural + */ + public function testExplicitPlural() { + $forms = [ 'one', 'few', 'many', 'other', '12=dozen' ]; + $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) ); + $forms = [ 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' ]; + $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 1 ], + [ 'many', 11 ], + [ 'one', 91 ], + [ 'one', 121 ], + [ 'few', 2 ], + [ 'few', 3 ], + [ 'few', 4 ], + [ 'few', 334 ], + [ 'many', 5 ], + [ 'many', 15 ], + [ 'many', 120 ], + ]; + } + + /** + * @dataProvider providePluralTwoForms + * @covers Language::convertPlural + */ + public function testPluralTwoForms( $result, $value ) { + $forms = [ '1=one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + public static function providePluralTwoForms() { + return [ + [ 'one', 1 ], + [ 'other', 11 ], + [ 'other', 91 ], + [ 'other', 121 ], + ]; + } + + /** + * @dataProvider providerGrammar + * @covers Language::convertGrammar + */ + public function testGrammar( $result, $word, $case ) { + $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) ); + } + + public static function providerGrammar() { + return [ + [ + 'Вікіпедії', + 'Вікіпедія', + 'genitive', + ], + [ + 'Віківидів', + 'Віківиди', + 'genitive', + ], + [ + 'Вікіцитат', + 'Вікіцитати', + 'genitive', + ], + [ + 'Вікіпідручника', + 'Вікіпідручник', + 'genitive', + ], + [ + 'Вікіпедію', + 'Вікіпедія', + 'accusative', + ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageUzTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageUzTest.php new file mode 100644 index 00000000..367226d7 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageUzTest.php @@ -0,0 +1,127 @@ +<?php +/** + * PHPUnit tests for the Uzbek language. + * The language can be represented using two scripts: + * - Latin (uz-latn) + * - Cyrillic (uz-cyrl) + * + * @author Robin Pepermans + * @author Antoine Musso <hashar at free dot fr> + * @copyright Copyright © 2012, Robin Pepermans + * @copyright Copyright © 2011, Antoine Musso <hashar at free dot fr> + * @file + * + * @todo methods in test class should be tidied: + * - Should be split into separate test methods and data providers + * - Tests for LanguageConverter and Language should probably be separate.. + */ + +/** + * @covers LanguageUz + * @covers UzConverter + */ +class LanguageUzTest extends LanguageClassesTestCase { + + /** + * @author Nikola Smolenski + * @covers LanguageConverter::convertTo + */ + public function testConversionToCyrillic() { + // A convertion of Latin to Cyrillic + $this->assertEquals( 'абвгғ', + $this->convertToCyrillic( 'abvggʻ' ) + ); + // Same as above, but assert that -{}-s must be removed and not converted + $this->assertEquals( 'ljабnjвгўоdb', + $this->convertToCyrillic( '-{lj}-ab-{nj}-vgoʻo-{db}-' ) + ); + // A simple convertion of Cyrillic to Cyrillic + $this->assertEquals( 'абвг', + $this->convertToCyrillic( 'абвг' ) + ); + // Same as above, but assert that -{}-s must be removed and not converted + $this->assertEquals( 'ljабnjвгdaž', + $this->convertToCyrillic( '-{lj}-аб-{nj}-вг-{da}-ž' ) + ); + } + + /** + * @covers LanguageConverter::convertTo + */ + public function testConversionToLatin() { + // A simple convertion of Latin to Latin + $this->assertEquals( 'abdef', + $this->convertToLatin( 'abdef' ) + ); + // A convertion of Cyrillic to Latin + $this->assertEquals( 'gʻabtsdOʻQyo', + $this->convertToLatin( 'ғабцдЎҚё' ) + ); + } + + # #### HELPERS ##################################################### + /** + * Wrapper to verify text stay the same after applying conversion + * @param string $text Text to convert + * @param string $variant Language variant 'uz-cyrl' or 'uz-latn' + * @param string $msg Optional message + */ + protected function assertUnConverted( $text, $variant, $msg = '' ) { + $this->assertEquals( + $text, + $this->convertTo( $text, $variant ), + $msg + ); + } + + /** + * Wrapper to verify a text is different once converted to a variant. + * @param string $text Text to convert + * @param string $variant Language variant 'uz-cyrl' or 'uz-latn' + * @param string $msg Optional message + */ + protected function assertConverted( $text, $variant, $msg = '' ) { + $this->assertNotEquals( + $text, + $this->convertTo( $text, $variant ), + $msg + ); + } + + /** + * Verifiy the given Cyrillic text is not converted 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 + */ + protected function assertCyrillic( $text, $msg = '' ) { + $this->assertUnConverted( $text, 'uz-cyrl', $msg ); + $this->assertConverted( $text, 'uz-latn', $msg ); + } + + /** + * Verifiy the given Latin text is not converted when using + * using the Latin variant and converted to Cyrillic when using + * the Cyrillic variant. + * @param string $text Text to convert + * @param string $msg Optional message + */ + protected function assertLatin( $text, $msg = '' ) { + $this->assertUnConverted( $text, 'uz-latn', $msg ); + $this->assertConverted( $text, 'uz-cyrl', $msg ); + } + + /** Wrapper for converter::convertTo() method*/ + protected function convertTo( $text, $variant ) { + return $this->getLang()->mConverter->convertTo( $text, $variant ); + } + + protected function convertToCyrillic( $text ) { + return $this->convertTo( $text, 'uz-cyrl' ); + } + + protected function convertToLatin( $text ) { + return $this->convertTo( $text, 'uz-latn' ); + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageWaTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageWaTest.php new file mode 100644 index 00000000..80c98603 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageWaTest.php @@ -0,0 +1,36 @@ +<?php +/** + * @author Amir E. Aharoni + * @copyright Copyright © 2012, Amir E. Aharoni + * @file + */ + +/** + * @covers LanguageWa + */ +class LanguageWaTest extends LanguageClassesTestCase { + /** + * @dataProvider providePlural + * @covers Language::convertPlural + */ + public function testPlural( $result, $value ) { + $forms = [ 'one', 'other' ]; + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + /** + * @dataProvider providePlural + * @covers Language::getPluralRuleType + */ + public function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + public static function providePlural() { + return [ + [ 'one', 0 ], + [ 'one', 1 ], + [ 'other', 2 ], + ]; + } +} diff --git a/www/wiki/tests/phpunit/languages/classes/LanguageZhTest.php b/www/wiki/tests/phpunit/languages/classes/LanguageZhTest.php new file mode 100644 index 00000000..2e73ac51 --- /dev/null +++ b/www/wiki/tests/phpunit/languages/classes/LanguageZhTest.php @@ -0,0 +1,126 @@ +<?php + +/** + * @covers LanguageZh + * @covers LanguageZh_hans + * @covers ZhConverter + */ +class LanguageZhTest extends LanguageClassesTestCase { + /** + * @dataProvider provideAutoConvertToAllVariants + * @covers Language::autoConvertToAllVariants + */ + public function testAutoConvertToAllVariants( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->autoConvertToAllVariants( $value ) ); + } + + public static function provideAutoConvertToAllVariants() { + return [ + // Plain hant -> hans + [ + [ + 'zh' => '㑯', + 'zh-hans' => '㑔', + 'zh-hant' => '㑯', + 'zh-cn' => '㑔', + 'zh-hk' => '㑯', + 'zh-mo' => '㑯', + 'zh-my' => '㑔', + 'zh-sg' => '㑔', + 'zh-tw' => '㑯', + ], + '㑯' + ], + // Plain hans -> hant + [ + [ + 'zh' => '㐷', + 'zh-hans' => '㐷', + 'zh-hant' => '傌', + 'zh-cn' => '㐷', + 'zh-hk' => '傌', + 'zh-mo' => '傌', + 'zh-my' => '㐷', + 'zh-sg' => '㐷', + 'zh-tw' => '傌', + ], + '㐷' + ], + // zh-cn specific + [ + [ + 'zh' => '仲介', + 'zh-hans' => '仲介', + 'zh-hant' => '仲介', + 'zh-cn' => '中介', + 'zh-hk' => '仲介', + 'zh-mo' => '仲介', + 'zh-my' => '中介', + 'zh-sg' => '中介', + 'zh-tw' => '仲介', + ], + '仲介' + ], + // zh-hk specific + [ + [ + 'zh' => '中文里', + 'zh-hans' => '中文里', + 'zh-hant' => '中文裡', + 'zh-cn' => '中文里', + 'zh-hk' => '中文裏', + 'zh-mo' => '中文裏', + 'zh-my' => '中文里', + 'zh-sg' => '中文里', + 'zh-tw' => '中文裡', + ], + '中文里' + ], + // zh-tw specific + [ + [ + 'zh' => '甲肝', + 'zh-hans' => '甲肝', + 'zh-hant' => '甲肝', + 'zh-cn' => '甲肝', + 'zh-hk' => '甲肝', + 'zh-mo' => '甲肝', + 'zh-my' => '甲肝', + 'zh-sg' => '甲肝', + 'zh-tw' => 'A肝', + ], + '甲肝' + ], + // zh-tw overrides zh-hant + [ + [ + 'zh' => '账', + 'zh-hans' => '账', + 'zh-hant' => '賬', + 'zh-cn' => '账', + 'zh-hk' => '賬', + 'zh-mo' => '賬', + 'zh-my' => '账', + 'zh-sg' => '账', + 'zh-tw' => '帳', + ], + '账' + ], + // zh-hk overrides zh-hant + [ + [ + 'zh' => '一地里', + 'zh-hans' => '一地里', + 'zh-hant' => '一地裡', + 'zh-cn' => '一地里', + 'zh-hk' => '一地裏', + 'zh-mo' => '一地裏', + 'zh-my' => '一地里', + 'zh-sg' => '一地里', + 'zh-tw' => '一地裡', + ], + '一地里' + ], + ]; + } +} |