LanguageRuTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * @author Amir E. Aharoni
  4. * based on LanguageBe_tarask.php
  5. * @copyright Copyright © 2012, Amir E. Aharoni
  6. * @file
  7. */
  8. class LanguageRuTest extends LanguageClassesTestCase {
  9. /**
  10. * @dataProvider providePlural
  11. * @covers Language::convertPlural
  12. */
  13. public function testPlural( $result, $value ) {
  14. $forms = [ 'one', 'few', 'many', 'other' ];
  15. $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
  16. }
  17. /**
  18. * Test explicit plural forms - n=FormN forms
  19. * @covers Language::convertPlural
  20. */
  21. public function testExplicitPlural() {
  22. $forms = [ 'one', 'few', 'many', 'other', '12=dozen' ];
  23. $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
  24. $forms = [ 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' ];
  25. $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
  26. }
  27. /**
  28. * @dataProvider providePlural
  29. * @covers Language::getPluralRuleType
  30. */
  31. public function testGetPluralRuleType( $result, $value ) {
  32. $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
  33. }
  34. public static function providePlural() {
  35. return [
  36. [ 'one', 1 ],
  37. [ 'many', 11 ],
  38. [ 'one', 91 ],
  39. [ 'one', 121 ],
  40. [ 'few', 2 ],
  41. [ 'few', 3 ],
  42. [ 'few', 4 ],
  43. [ 'few', 334 ],
  44. [ 'many', 5 ],
  45. [ 'many', 15 ],
  46. [ 'many', 120 ],
  47. ];
  48. }
  49. /**
  50. * @dataProvider providePluralTwoForms
  51. * @covers Language::convertPlural
  52. */
  53. public function testPluralTwoForms( $result, $value ) {
  54. $forms = [ '1=one', 'other' ];
  55. $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
  56. }
  57. public static function providePluralTwoForms() {
  58. return [
  59. [ 'one', 1 ],
  60. [ 'other', 11 ],
  61. [ 'other', 91 ],
  62. [ 'other', 121 ],
  63. ];
  64. }
  65. /**
  66. * @dataProvider providerGrammar
  67. * @covers Language::convertGrammar
  68. */
  69. public function testGrammar( $result, $word, $case ) {
  70. $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) );
  71. }
  72. public static function providerGrammar() {
  73. return [
  74. [
  75. 'Википедии',
  76. 'Википедия',
  77. 'genitive',
  78. ],
  79. [
  80. 'Викитеки',
  81. 'Викитека',
  82. 'genitive',
  83. ],
  84. [
  85. 'Викитеке',
  86. 'Викитека',
  87. 'prepositional',
  88. ],
  89. [
  90. 'Викисклада',
  91. 'Викисклад',
  92. 'genitive',
  93. ],
  94. [
  95. 'Викиверситета',
  96. 'Викиверситет',
  97. 'genitive',
  98. ],
  99. [
  100. 'Викискладе',
  101. 'Викисклад',
  102. 'prepositional',
  103. ],
  104. [
  105. 'Викиданных',
  106. 'Викиданные',
  107. 'prepositional',
  108. ],
  109. [
  110. 'Викиверситете',
  111. 'Викиверситет',
  112. 'prepositional',
  113. ],
  114. [
  115. 'русского',
  116. 'русский',
  117. 'languagegen',
  118. ],
  119. [
  120. 'немецкого',
  121. 'немецкий',
  122. 'languagegen',
  123. ],
  124. [
  125. 'иврита',
  126. 'иврит',
  127. 'languagegen',
  128. ],
  129. [
  130. 'эсперанто',
  131. 'эсперанто',
  132. 'languagegen',
  133. ],
  134. [
  135. 'русском',
  136. 'русский',
  137. 'languageprep',
  138. ],
  139. [
  140. 'немецком',
  141. 'немецкий',
  142. 'languageprep',
  143. ],
  144. [
  145. 'идише',
  146. 'идиш',
  147. 'languageprep',
  148. ],
  149. [
  150. 'эсперанто',
  151. 'эсперанто',
  152. 'languageprep',
  153. ],
  154. [
  155. 'по-русски',
  156. 'русский',
  157. 'languageadverb',
  158. ],
  159. [
  160. 'по-немецки',
  161. 'немецкий',
  162. 'languageadverb',
  163. ],
  164. [
  165. 'на иврите',
  166. 'иврит',
  167. 'languageadverb',
  168. ],
  169. [
  170. 'на эсперанто',
  171. 'эсперанто',
  172. 'languageadverb',
  173. ],
  174. [
  175. 'на языке гуарани',
  176. 'гуарани',
  177. 'languageadverb',
  178. ],
  179. ];
  180. }
  181. }