summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/languages/classes
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/languages/classes')
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageAmTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageArTest.php89
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageArqTest.php26
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageBeTest.php42
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageBe_taraskTest.php100
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageBhoTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageBsTest.php46
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageCrhTest.php92
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageCsTest.php41
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageCuTest.php44
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageCyTest.php43
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageDsbTest.php43
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageFrTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageGaTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageGanTest.php38
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageGdTest.php53
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageGvTest.php44
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHeTest.php132
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHiTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHrTest.php42
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHsbTest.php43
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHuTest.php37
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageHyTest.php39
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageIuTest.php38
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageKkTest.php33
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageKshTest.php37
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageKuTest.php44
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageLnTest.php35
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageLtTest.php63
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageLvTest.php44
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageMgTest.php36
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageMkTest.php40
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageMlTest.php40
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageMoTest.php45
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageMtTest.php77
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageNlTest.php24
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageNsoTest.php34
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguagePlTest.php104
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageRoTest.php45
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageRuTest.php189
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSeTest.php53
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSgsTest.php71
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageShTest.php42
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageShiTest.php36
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSkTest.php42
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSlTest.php46
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSmaTest.php53
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageSrTest.php252
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageTgTest.php34
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageTiTest.php34
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageTlTest.php36
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageTrTest.php63
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageUkTest.php109
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageUzTest.php127
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageWaTest.php36
-rw-r--r--www/wiki/tests/phpunit/languages/classes/LanguageZhTest.php126
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' => '一地裡',
+ ],
+ '一地里'
+ ],
+ ];
+ }
+}