wiki.techinc.nl/tests/phpunit/languages/classes/LanguageUkTest.php
Amir E. Aharoni 5ccbaf2c48 Update grammar rules and test for Ukrainian
The grammar rules for Ukrainian have several mistakes.
This is the first in a series of commits that fix this.

* Add grammar tests for PHP. There weren't any tests at all,
  and now there are some. Not tests are added for rules that
  are wrong and irrelevant and will be removed in subsequent commits.
* Add tests for JavaScript, and update a grammar rule that was
  incorrectly copied from Russian.

Change-Id: I6de4581e2908eba39b33a13b07d048a34a3bd803
2015-09-27 11:49:07 +03:00

100 lines
2.4 KiB
PHP

<?php
/**
* @author Amir E. Aharoni
* based on LanguageBe_tarask.php
* @copyright Copyright © 2012, Amir E. Aharoni
* @file
*/
/** Tests for Ukrainian */
class LanguageUkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
$forms = array( '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 = array( 'one', 'few', 'many', 'other', '12=dozen' );
$this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
$forms = array( '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 array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
array( 'few', 2 ),
array( 'few', 3 ),
array( 'few', 4 ),
array( 'few', 334 ),
array( 'many', 5 ),
array( 'many', 15 ),
array( 'many', 120 ),
);
}
/**
* @dataProvider providePluralTwoForms
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
$forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
return array(
array( 'one', 1 ),
array( 'other', 11 ),
array( 'other', 91 ),
array( '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 array(
array(
'Вікіпедії',
'Вікіпедія',
'genitive',
),
array(
'Віківидів',
'Віківиди',
'genitive',
),
array(
'Вікіпедію',
'Вікіпедія',
'accusative',
),
);
}
}