annotate core/tests/Drupal/Tests/Component/Gettext/PoHeaderTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\Component\Gettext;
Chris@0 4
Chris@0 5 use Drupal\Component\Gettext\PoHeader;
Chris@0 6 use PHPUnit\Framework\TestCase;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Unit tests for the Gettext PO file header handling features.
Chris@0 10 *
Chris@0 11 * @see Drupal\Component\Gettext\PoHeader.
Chris@0 12 *
Chris@0 13 * @group Gettext
Chris@0 14 */
Chris@0 15 class PoHeaderTest extends TestCase {
Chris@0 16
Chris@0 17 /**
Chris@0 18 * Tests that plural expressions are evaluated correctly.
Chris@0 19 *
Chris@0 20 * Validate that the given plural expressions is evaluated with the correct
Chris@0 21 * plural formula.
Chris@0 22 *
Chris@0 23 * @param string $plural
Chris@0 24 * The plural expression.
Chris@0 25 * @param array $expected
Chris@0 26 * Array of expected plural positions keyed by plural value.
Chris@0 27 *
Chris@0 28 * @dataProvider providerTestPluralsFormula
Chris@0 29 */
Chris@0 30 public function testPluralsFormula($plural, $expected) {
Chris@0 31 $p = new PoHeader();
Chris@0 32 $parsed = $p->parsePluralForms($plural);
Chris@0 33 list($nplurals, $new_plural) = $parsed;
Chris@0 34 foreach ($expected as $number => $plural_form) {
Chris@0 35 $result = isset($new_plural[$number]) ? $new_plural[$number] : $new_plural['default'];
Chris@0 36 $this->assertEquals($result, $plural_form, 'Difference found at ' . $number . ': ' . $plural_form . ' versus ' . $result);
Chris@0 37 }
Chris@0 38 }
Chris@0 39
Chris@0 40 /**
Chris@0 41 * Data provider for testPluralsFormula.
Chris@0 42 *
Chris@0 43 * Gets pairs of plural expressions and expected plural positions keyed by
Chris@0 44 * plural value.
Chris@0 45 *
Chris@0 46 * @return array
Chris@0 47 * Pairs of plural expressions and expected plural positions keyed by plural
Chris@0 48 * value.
Chris@0 49 */
Chris@0 50 public function providerTestPluralsFormula() {
Chris@0 51 return [
Chris@0 52 [
Chris@0 53 'nplurals=1; plural=0;',
Chris@0 54 ['default' => 0],
Chris@0 55 ],
Chris@0 56 [
Chris@0 57 'nplurals=2; plural=(n > 1);',
Chris@0 58 [0 => 0, 1 => 0, 'default' => 1],
Chris@0 59 ],
Chris@0 60 [
Chris@0 61 'nplurals=2; plural=(n!=1);',
Chris@0 62 [1 => 0, 'default' => 1],
Chris@0 63 ],
Chris@0 64 [
Chris@0 65 'nplurals=2; plural=(((n==1)||((n%10)==1))?(0):1);',
Chris@0 66 [
Chris@0 67 1 => 0,
Chris@0 68 11 => 0,
Chris@0 69 21 => 0,
Chris@0 70 31 => 0,
Chris@0 71 41 => 0,
Chris@0 72 51 => 0,
Chris@0 73 61 => 0,
Chris@0 74 71 => 0,
Chris@0 75 81 => 0,
Chris@0 76 91 => 0,
Chris@0 77 101 => 0,
Chris@0 78 111 => 0,
Chris@0 79 121 => 0,
Chris@0 80 131 => 0,
Chris@0 81 141 => 0,
Chris@0 82 151 => 0,
Chris@0 83 161 => 0,
Chris@0 84 171 => 0,
Chris@0 85 181 => 0,
Chris@0 86 191 => 0,
Chris@0 87 'default' => 1,
Chris@0 88 ],
Chris@0 89 ],
Chris@0 90 [
Chris@0 91 'nplurals=3; plural=((((n%10)==1)&&((n%100)!=11))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));',
Chris@0 92 [
Chris@0 93 1 => 0,
Chris@0 94 2 => 1,
Chris@0 95 3 => 1,
Chris@0 96 4 => 1,
Chris@0 97 21 => 0,
Chris@0 98 22 => 1,
Chris@0 99 23 => 1,
Chris@0 100 24 => 1,
Chris@0 101 31 => 0,
Chris@0 102 32 => 1,
Chris@0 103 33 => 1,
Chris@0 104 34 => 1,
Chris@0 105 41 => 0,
Chris@0 106 42 => 1,
Chris@0 107 43 => 1,
Chris@0 108 44 => 1,
Chris@0 109 51 => 0,
Chris@0 110 52 => 1,
Chris@0 111 53 => 1,
Chris@0 112 54 => 1,
Chris@0 113 61 => 0,
Chris@0 114 62 => 1,
Chris@0 115 63 => 1,
Chris@0 116 64 => 1,
Chris@0 117 71 => 0,
Chris@0 118 72 => 1,
Chris@0 119 73 => 1,
Chris@0 120 74 => 1,
Chris@0 121 81 => 0,
Chris@0 122 82 => 1,
Chris@0 123 83 => 1,
Chris@0 124 84 => 1,
Chris@0 125 91 => 0,
Chris@0 126 92 => 1,
Chris@0 127 93 => 1,
Chris@0 128 94 => 1,
Chris@0 129 101 => 0,
Chris@0 130 102 => 1,
Chris@0 131 103 => 1,
Chris@0 132 104 => 1,
Chris@0 133 121 => 0,
Chris@0 134 122 => 1,
Chris@0 135 123 => 1,
Chris@0 136 124 => 1,
Chris@0 137 131 => 0,
Chris@0 138 132 => 1,
Chris@0 139 133 => 1,
Chris@0 140 134 => 1,
Chris@0 141 141 => 0,
Chris@0 142 142 => 1,
Chris@0 143 143 => 1,
Chris@0 144 144 => 1,
Chris@0 145 151 => 0,
Chris@0 146 152 => 1,
Chris@0 147 153 => 1,
Chris@0 148 154 => 1,
Chris@0 149 161 => 0,
Chris@0 150 162 => 1,
Chris@0 151 163 => 1,
Chris@0 152 164 => 1,
Chris@0 153 171 => 0,
Chris@0 154 172 => 1,
Chris@0 155 173 => 1,
Chris@0 156 174 => 1,
Chris@0 157 181 => 0,
Chris@0 158 182 => 1,
Chris@0 159 183 => 1,
Chris@0 160 184 => 1,
Chris@0 161 191 => 0,
Chris@0 162 192 => 1,
Chris@0 163 193 => 1,
Chris@0 164 194 => 1,
Chris@0 165 'default' => 2,
Chris@0 166 ],
Chris@0 167 ],
Chris@0 168 [
Chris@0 169 'nplurals=3; plural=((n==1)?(0):(((n>=2)&&(n<=4))?(1):2));',
Chris@0 170 [
Chris@0 171 1 => 0,
Chris@0 172 2 => 1,
Chris@0 173 3 => 1,
Chris@0 174 4 => 1,
Chris@0 175 'default' => 2,
Chris@0 176 ],
Chris@0 177 ],
Chris@0 178 [
Chris@0 179 'nplurals=3; plural=((n==1)?(0):(((n==0)||(((n%100)>0)&&((n%100)<20)))?(1):2));',
Chris@0 180 [
Chris@0 181 0 => 1,
Chris@0 182 1 => 0,
Chris@0 183 2 => 1,
Chris@0 184 3 => 1,
Chris@0 185 4 => 1,
Chris@0 186 5 => 1,
Chris@0 187 6 => 1,
Chris@0 188 7 => 1,
Chris@0 189 8 => 1,
Chris@0 190 9 => 1,
Chris@0 191 10 => 1,
Chris@0 192 11 => 1,
Chris@0 193 12 => 1,
Chris@0 194 13 => 1,
Chris@0 195 14 => 1,
Chris@0 196 15 => 1,
Chris@0 197 16 => 1,
Chris@0 198 17 => 1,
Chris@0 199 18 => 1,
Chris@0 200 19 => 1,
Chris@0 201 101 => 1,
Chris@0 202 102 => 1,
Chris@0 203 103 => 1,
Chris@0 204 104 => 1,
Chris@0 205 105 => 1,
Chris@0 206 106 => 1,
Chris@0 207 107 => 1,
Chris@0 208 108 => 1,
Chris@0 209 109 => 1,
Chris@0 210 110 => 1,
Chris@0 211 111 => 1,
Chris@0 212 112 => 1,
Chris@0 213 113 => 1,
Chris@0 214 114 => 1,
Chris@0 215 115 => 1,
Chris@0 216 116 => 1,
Chris@0 217 117 => 1,
Chris@0 218 118 => 1,
Chris@0 219 119 => 1,
Chris@0 220 'default' => 2,
Chris@0 221 ],
Chris@0 222 ],
Chris@0 223 [
Chris@0 224 'nplurals=3; plural=((n==1)?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));',
Chris@0 225 [
Chris@0 226 1 => 0,
Chris@0 227 2 => 1,
Chris@0 228 3 => 1,
Chris@0 229 4 => 1,
Chris@0 230 22 => 1,
Chris@0 231 23 => 1,
Chris@0 232 24 => 1,
Chris@0 233 32 => 1,
Chris@0 234 33 => 1,
Chris@0 235 34 => 1,
Chris@0 236 42 => 1,
Chris@0 237 43 => 1,
Chris@0 238 44 => 1,
Chris@0 239 52 => 1,
Chris@0 240 53 => 1,
Chris@0 241 54 => 1,
Chris@0 242 62 => 1,
Chris@0 243 63 => 1,
Chris@0 244 64 => 1,
Chris@0 245 72 => 1,
Chris@0 246 73 => 1,
Chris@0 247 74 => 1,
Chris@0 248 82 => 1,
Chris@0 249 83 => 1,
Chris@0 250 84 => 1,
Chris@0 251 92 => 1,
Chris@0 252 93 => 1,
Chris@0 253 94 => 1,
Chris@0 254 102 => 1,
Chris@0 255 103 => 1,
Chris@0 256 104 => 1,
Chris@0 257 122 => 1,
Chris@0 258 123 => 1,
Chris@0 259 124 => 1,
Chris@0 260 132 => 1,
Chris@0 261 133 => 1,
Chris@0 262 134 => 1,
Chris@0 263 142 => 1,
Chris@0 264 143 => 1,
Chris@0 265 144 => 1,
Chris@0 266 152 => 1,
Chris@0 267 153 => 1,
Chris@0 268 154 => 1,
Chris@0 269 162 => 1,
Chris@0 270 163 => 1,
Chris@0 271 164 => 1,
Chris@0 272 172 => 1,
Chris@0 273 173 => 1,
Chris@0 274 174 => 1,
Chris@0 275 182 => 1,
Chris@0 276 183 => 1,
Chris@0 277 184 => 1,
Chris@0 278 192 => 1,
Chris@0 279 193 => 1,
Chris@0 280 194 => 1,
Chris@0 281 'default' => 2,
Chris@0 282 ],
Chris@0 283 ],
Chris@0 284 [
Chris@0 285 'nplurals=4; plural=(((n==1)||(n==11))?(0):(((n==2)||(n==12))?(1):(((n>2)&&(n<20))?(2):3)));',
Chris@0 286 [
Chris@0 287 1 => 0,
Chris@0 288 2 => 1,
Chris@0 289 3 => 2,
Chris@0 290 4 => 2,
Chris@0 291 5 => 2,
Chris@0 292 6 => 2,
Chris@0 293 7 => 2,
Chris@0 294 8 => 2,
Chris@0 295 9 => 2,
Chris@0 296 10 => 2,
Chris@0 297 11 => 0,
Chris@0 298 12 => 1,
Chris@0 299 13 => 2,
Chris@0 300 14 => 2,
Chris@0 301 15 => 2,
Chris@0 302 16 => 2,
Chris@0 303 17 => 2,
Chris@0 304 18 => 2,
Chris@0 305 19 => 2,
Chris@0 306 'default' => 3,
Chris@0 307 ],
Chris@0 308 ],
Chris@0 309 [
Chris@0 310 'nplurals=4; plural=(((n%100)==1)?(0):(((n%100)==2)?(1):((((n%100)==3)||((n%100)==4))?(2):3)));',
Chris@0 311 [
Chris@0 312 1 => 0,
Chris@0 313 2 => 1,
Chris@0 314 3 => 2,
Chris@0 315 4 => 2,
Chris@0 316 101 => 0,
Chris@0 317 102 => 1,
Chris@0 318 103 => 2,
Chris@0 319 104 => 2,
Chris@0 320 'default' => 3,
Chris@0 321 ],
Chris@0 322 ],
Chris@0 323 [
Chris@0 324 'nplurals=5; plural=((n==1)?(0):((n==2)?(1):((n<7)?(2):((n<11)?(3):4))));',
Chris@0 325 [
Chris@0 326 0 => 2,
Chris@0 327 1 => 0,
Chris@0 328 2 => 1,
Chris@0 329 3 => 2,
Chris@0 330 4 => 2,
Chris@0 331 5 => 2,
Chris@0 332 6 => 2,
Chris@0 333 7 => 3,
Chris@0 334 8 => 3,
Chris@0 335 9 => 3,
Chris@0 336 10 => 3,
Chris@0 337 'default' => 4,
Chris@0 338 ],
Chris@0 339 ],
Chris@0 340 [
Chris@0 341 'nplurals=6; plural=((n==1)?(0):((n==0)?(1):((n==2)?(2):((((n%100)>=3)&&((n%100)<=10))?(3):((((n%100)>=11)&&((n%100)<=99))?(4):5)))));',
Chris@0 342 [
Chris@0 343 0 => 1,
Chris@0 344 1 => 0,
Chris@0 345 2 => 2,
Chris@0 346 3 => 3,
Chris@0 347 4 => 3,
Chris@0 348 5 => 3,
Chris@0 349 6 => 3,
Chris@0 350 7 => 3,
Chris@0 351 8 => 3,
Chris@0 352 9 => 3,
Chris@0 353 10 => 3,
Chris@0 354 100 => 5,
Chris@0 355 101 => 5,
Chris@0 356 102 => 5,
Chris@0 357 103 => 3,
Chris@0 358 104 => 3,
Chris@0 359 105 => 3,
Chris@0 360 106 => 3,
Chris@0 361 107 => 3,
Chris@0 362 108 => 3,
Chris@0 363 109 => 3,
Chris@0 364 110 => 3,
Chris@0 365 'default' => 4,
Chris@0 366 ],
Chris@0 367 ],
Chris@0 368 ];
Chris@0 369 }
Chris@0 370
Chris@0 371 }