feat: add toBeCamelCase

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

View File

@ -1033,4 +1033,16 @@ final class Expectation
return $this;
}
/**
* Asserts that the value is camelCase.
*
* @return self<TValue>
*/
public function toBeCamelCase(string $message = ''): self
{
Assert::assertTrue((bool) preg_match('/^\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')->toBeCamelCase();
expect('abcDef')->toBeCamelCase();
expect('abc-def')->not->toBeCamelCase();
expect('abc-def')->not->toBeCamelCase();
expect('AbcDef')->not->toBeCamelCase();
});
test('failures', function () {
expect('Abc')->toBeCamelCase();
})->throws(ExpectationFailedException::class);
test('failures with custom message', function () {
expect('Abc')->toBeCamelCase('oh no!');
})->throws(ExpectationFailedException::class, 'oh no!');
test('not failures', function () {
expect('abcDef')->not->toBeCamelCase();
})->throws(ExpectationFailedException::class);