/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
symfony
/
string
/
Tests
/
Inflector
/
Upload File
HOME
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\String\Tests\Inflector; use PHPUnit\Framework\TestCase; use Symfony\Component\String\Inflector\FrenchInflector; class FrenchInflectorTest extends TestCase { public static function pluralizeProvider() { return [ // Le pluriel par défaut ['voiture', 'voitures'], // special characters ['œuf', 'œufs'], ['oeuf', 'oeufs'], // Les mots finissant par s, x, z sont invariables en nombre ['bois', 'bois'], ['fils', 'fils'], ['héros', 'héros'], ['nez', 'nez'], ['rictus', 'rictus'], ['sans', 'sans'], ['souris', 'souris'], ['tas', 'tas'], ['toux', 'toux'], // Les mots finissant en eau prennent tous un x au pluriel ['eau', 'eaux'], ['sceau', 'sceaux'], // Les mots finissant en au prennent tous un x au pluriel sauf landau ['noyau', 'noyaux'], ['landau', 'landaus'], // Les mots finissant en eu prennent un x au pluriel sauf pneu, bleu et émeu ['pneu', 'pneus'], ['bleu', 'bleus'], ['émeu', 'émeus'], ['cheveu', 'cheveux'], // Les mots finissant en al se terminent en aux au pluriel ['amiral', 'amiraux'], ['animal', 'animaux'], ['arsenal', 'arsenaux'], ['bocal', 'bocaux'], ['canal', 'canaux'], ['capital', 'capitaux'], ['caporal', 'caporaux'], ['cheval', 'chevaux'], ['cristal', 'cristaux'], ['général', 'généraux'], ['hopital', 'hopitaux'], ['hôpital', 'hôpitaux'], ['idéal', 'idéaux'], ['journal', 'journaux'], ['littoral', 'littoraux'], ['local', 'locaux'], ['mal', 'maux'], ['métal', 'métaux'], ['minéral', 'minéraux'], ['principal', 'principaux'], ['radical', 'radicaux'], ['terminal', 'terminaux'], // sauf bal, carnaval, caracal, chacal, choral, corral, étal, festival, récital et val ['bal', 'bals'], ['carnaval', 'carnavals'], ['caracal', 'caracals'], ['chacal', 'chacals'], ['choral', 'chorals'], ['corral', 'corrals'], ['étal', 'étals'], ['festival', 'festivals'], ['récital', 'récitals'], ['val', 'vals'], // Les noms terminés en -ail prennent un s au pluriel. ['portail', 'portails'], ['rail', 'rails'], // SAUF aspirail, bail, corail, émail, fermail, soupirail, travail, vantail et vitrail qui font leur pluriel en -aux ['aspirail', 'aspiraux'], ['bail', 'baux'], ['corail', 'coraux'], ['émail', 'émaux'], ['fermail', 'fermaux'], ['soupirail', 'soupiraux'], ['travail', 'travaux'], ['vantail', 'vantaux'], ['vitrail', 'vitraux'], // Les noms terminés en -ou prennent un s au pluriel. ['trou', 'trous'], ['fou', 'fous'], // SAUF Bijou, caillou, chou, genou, hibou, joujou et pou qui prennent un x au pluriel ['bijou', 'bijoux'], ['caillou', 'cailloux'], ['chou', 'choux'], ['genou', 'genoux'], ['hibou', 'hiboux'], ['joujou', 'joujoux'], ['pou', 'poux'], // Inflected word ['cinquante', 'cinquante'], ['soixante', 'soixante'], ['mille', 'mille'], // Titles ['monsieur', 'messieurs'], ['madame', 'mesdames'], ['mademoiselle', 'mesdemoiselles'], ['monseigneur', 'messeigneurs'], ]; } /** * @dataProvider pluralizeProvider */ public function testSingularize(string $singular, string $plural) { $this->assertSame([$singular], (new FrenchInflector())->singularize($plural)); // test casing: if the first letter was uppercase, it should remain so $this->assertSame([ucfirst($singular)], (new FrenchInflector())->singularize(ucfirst($plural))); } /** * @dataProvider pluralizeProvider */ public function testPluralize(string $singular, string $plural) { $this->assertSame([$plural], (new FrenchInflector())->pluralize($singular)); // test casing: if the first letter was uppercase, it should remain so $this->assertSame([ucfirst($plural)], (new FrenchInflector())->pluralize(ucfirst($singular))); } }