/** * Test that singularize() returns a single form, respecting irregularities and other locale specific rules. */ public function testSingularize() { // irregular $this->assertEquals('atlas', Inflector::singularize('atlases')); $this->assertEquals('corpus', Inflector::singularize('corpuses')); $this->assertEquals('octopus', Inflector::singularize('octopuses')); $this->assertEquals('ox', Inflector::singularize('oxen')); $this->assertEquals('goose', Inflector::singularize('geese')); // uninflected $this->assertEquals('money', Inflector::singularize('money')); $this->assertEquals('flounder', Inflector::singularize('flounder')); $this->assertEquals('moose', Inflector::singularize('moose')); $this->assertEquals('species', Inflector::singularize('species')); $this->assertEquals('wildebeest', Inflector::singularize('wildebeest')); // singular $this->assertEquals('quiz', Inflector::singularize('quizzes')); $this->assertEquals('alias', Inflector::singularize('aliases')); $this->assertEquals('shoe', Inflector::singularize('shoes')); $this->assertEquals('person', Inflector::singularize('people')); $this->assertEquals('apple', Inflector::singularize('apples')); // already singular $this->assertEquals('atlas', Inflector::singularize('atlas')); $this->assertEquals('corpus', Inflector::singularize('corpus')); $this->assertEquals('octopus', Inflector::singularize('octopus')); $this->assertEquals('ox', Inflector::singularize('ox')); $this->assertEquals('goose', Inflector::singularize('goose')); }
/** * {@inheritdoc} */ public static function className($string) { return static::cache([__METHOD__, $string], function () use($string) { return Inflector::camelCase(Inflector::singularize($string)); }); }