feat: add toBeStudlyCase

This commit is contained in:
Maurizio
2023-08-17 20:49:40 +02:00
parent a76414aeee
commit 997b0e9368
2 changed files with 35 additions and 0 deletions

View File

@ -1045,4 +1045,16 @@ final class Expectation
return $this; return $this;
} }
/**
* Asserts that the value is StudlyCase.
*
* @return self<TValue>
*/
public function toBeStudlyCase(string $message = ''): self
{
Assert::assertTrue((bool) preg_match('/^\p{Lu}+\p{Ll}[\p{Ll}\p{Lu}]+$/u', (string) $this->value), $message);
return $this;
}
} }

View File

@ -0,0 +1,23 @@
<?php
use PHPUnit\Framework\ExpectationFailedException;
test('pass', function () {
expect('Abc')->toBeStudlyCase();
expect('AbcDef')->toBeStudlyCase();
expect('abc-def')->not->toBeStudlyCase();
expect('abc-def')->not->toBeStudlyCase();
expect('abc')->not->toBeStudlyCase();
});
test('failures', function () {
expect('abc')->toBeStudlyCase();
})->throws(ExpectationFailedException::class);
test('failures with custom message', function () {
expect('abc')->toBeStudlyCase('oh no!');
})->throws(ExpectationFailedException::class, 'oh no!');
test('not failures', function () {
expect('AbcDef')->not->toBeStudlyCase();
})->throws(ExpectationFailedException::class);