summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php')
-rw-r--r--www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php125
1 files changed, 125 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php b/www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php
new file mode 100644
index 00000000..3629b2e9
--- /dev/null
+++ b/www/wiki/extensions/Translate/tests/phpunit/ffs/RubyYamlFFSTest.php
@@ -0,0 +1,125 @@
+<?php
+
+class RubyYamlFFSTest extends MediaWikiTestCase {
+ /** @var MessageGroup */
+ protected $group;
+
+ /** @var FFS */
+ protected $ffs;
+
+ protected $groupConfiguration = array(
+ 'BASIC' => array(
+ 'class' => 'FileBasedMessageGroup',
+ 'id' => 'test-id',
+ 'label' => 'Test Label',
+ 'namespace' => 'NS_MEDIAWIKI',
+ 'description' => 'Test description',
+ ),
+ 'FILES' => array(
+ 'class' => 'RubyYamlFFS',
+ ),
+ );
+
+ protected function setUp() {
+ parent::setUp();
+ $group = MessageGroupBase::factory( $this->groupConfiguration );
+ /** @var YamlFFS $ffs */
+ $this->ffs = $group->getFFS();
+ }
+
+ public function testFlattenPluralWithNoPlurals() {
+ $input = array(
+ 'much' => 'a lot',
+ 'less' => 'not so much',
+ );
+ $output = false;
+ $this->assertEquals( $output, $this->ffs->flattenPlural( $input ) );
+ }
+
+ public function testFlattenPluralWithPlurals() {
+ $input = array(
+ 'one' => 'just a tiny bit',
+ 'two' => 'not so much',
+ 'other' => 'maybe a lot',
+ );
+ $output = '{{PLURAL|one=just a tiny bit|two=not so much|maybe a lot}}';
+ $this->assertEquals( $output, $this->ffs->flattenPlural( $input ) );
+ }
+
+ public function testFlattenPluralWithArrays() {
+ $input = array(
+ 'one' => array(
+ 'multi' => 'he lives in a multistorey house',
+ 'row' => 'he lives in a row house',
+ ),
+ 'other' => array(
+ 'multi' => 'he lives in mountain cave',
+ 'row' => 'he lives in a cave near the river',
+ ),
+ );
+ $output = false;
+ $this->assertEquals( $output, $this->ffs->flattenPlural( $input ) );
+ }
+
+ /**
+ * @expectedException MWException
+ * @expectedExceptionMessage Reserved plural keywords mixed with other keys
+ * @dataProvider flattenPluralsWithMixedKeywordsProvider
+ */
+
+ public function testFlattenPluralsWithMixedKeywords( $input, $comment ) {
+ $this->ffs->flattenPlural( $input );
+ }
+
+ public function flattenPluralsWithMixedKeywordsProvider() {
+ return array(
+ array(
+ array(
+ 'carrot' => 'I like carrots',
+ 'other' => 'I like milk',
+ ),
+ 'reserved keyword at the end',
+ ),
+ array(
+ array(
+ 'one' => 'I am the one leader',
+ 'club' => 'I am the club leader',
+ ),
+ 'reserved keyword at the beginning',
+ )
+ );
+ }
+
+ /**
+ * @dataProvider unflattenDataProvider
+ */
+ public function testUnflattenPural( $key, $value, $result ) {
+ $this->assertEquals(
+ $result,
+ $this->ffs->unflattenPlural( $key, $value )
+ );
+ }
+
+ public function unflattenDataProvider() {
+ return array(
+ array( 'key', '{{PLURAL}}', false ),
+ array( 'key', 'value', array( 'key' => 'value' ) ),
+ array( 'key', '{{PLURAL|one=cat|other=cats}}',
+ array( 'key.one' => 'cat', 'key.other' => 'cats' )
+ ),
+ array( 'key', '{{PLURAL|one=шляху %{related_ways}|шляхоў %{related_ways}}}',
+ array(
+ 'key.one' => 'шляху %{related_ways}',
+ 'key.other' => 'шляхоў %{related_ways}'
+ )
+ ),
+ array( 'key', '{{PLURAL|foo=cat}}',
+ array( 'key.other' => 'foo=cat' )
+ ),
+ array( 'key', '{{PLURAL|zero=0|one=1|two=2|few=3|many=160|other=898}}',
+ array( 'key.zero' => '0', 'key.one' => '1', 'key.two' => '2',
+ 'key.few' => '3', 'key.many' => '160', 'key.other' => '898' )
+ ),
+ );
+ }
+}