diff --git a/docs/concrete-api.md b/docs/concrete-api.md index 051e089ea..6ff392b7a 100644 --- a/docs/concrete-api.md +++ b/docs/concrete-api.md @@ -39,7 +39,7 @@ use Respect\Validation\Validators; $usernameValidator = ValidatorBuilder::init( new Validators\Key( 'name', - new Validators\AllOf( + new Validators\LogicAnd( new Validators\Alnum(), new Validators\Not( new Validators\Spaced(), diff --git a/docs/feature-guide.md b/docs/feature-guide.md index 3c762ac24..d4812e626 100644 --- a/docs/feature-guide.md +++ b/docs/feature-guide.md @@ -40,8 +40,8 @@ Respect\Validation offers over 150 validators, many of which are designed to add - Validating **Arrays**: [Key](validators/Key.md), [KeyOptional](validators/KeyOptional.md), [KeyExists](validators/KeyExists.md). - Validating **Array structures**: [KeySet](validators/KeySet.md). - Validating **Object properties**: [Property](validators/Property.md), [PropertyOptional](validators/PropertyOptional.md), [PropertyExists](validators/PropertyExists.md). -- Using **Conditional validation**: [NullOr](validators/NullOr.md), [UndefOr](validators/UndefOr.md), [When](validators/When.md). -- Using **Grouped validation**: [AllOf](validators/AllOf.md), [AnyOf](validators/AnyOf.md), [NoneOf](validators/NoneOf.md), [OneOf](validators/OneOf.md) +- Using **Conditional validation**: [NullOr](validators/NullOr.md), [UndefOr](validators/UndefOr.md), [LogicCond](validators/LogicCond.md). +- Using **Logical validation**: [LogicAnd](validators/LogicAnd.md), [LogicOr](validators/LogicOr.md), [LogicNor](validators/LogicNor.md), [LogicXor](validators/LogicXor.md), [LogicCond](validators/LogicCond.md) - Validating **Each** value in the input: [Each](validators/Each.md). - Validating the **Length** of the input: [Length](validators/Length.md). - Validating the **Maximum** value in the input: [Max](validators/Max.md). diff --git a/docs/list-of-validators-by-category.md b/docs/list-of-validators-by-category.md index a4bfbe685..349a594c0 100644 --- a/docs/list-of-validators-by-category.md +++ b/docs/list-of-validators-by-category.md @@ -58,17 +58,17 @@ ## Composite -- [AllOf](validators/AllOf.md) -- [AnyOf](validators/AnyOf.md) - [Circuit](validators/Circuit.md) -- [NoneOf](validators/NoneOf.md) -- [OneOf](validators/OneOf.md) +- [LogicAnd](validators/LogicAnd.md) +- [LogicNor](validators/LogicNor.md) +- [LogicOr](validators/LogicOr.md) +- [LogicXor](validators/LogicXor.md) ## Conditions - [Circuit](validators/Circuit.md) +- [LogicCond](validators/LogicCond.md) - [Not](validators/Not.md) -- [When](validators/When.md) ## Core @@ -144,6 +144,14 @@ - [PostalCode](validators/PostalCode.md) - [SubdivisionCode](validators/SubdivisionCode.md) +## Logical + +- [LogicAnd](validators/LogicAnd.md) +- [LogicCond](validators/LogicCond.md) +- [LogicNor](validators/LogicNor.md) +- [LogicOr](validators/LogicOr.md) +- [LogicXor](validators/LogicXor.md) + ## Math - [Factor](validators/Factor.md) @@ -167,22 +175,22 @@ ## Nesting -- [AllOf](validators/AllOf.md) -- [AnyOf](validators/AnyOf.md) - [Call](validators/Call.md) - [Circuit](validators/Circuit.md) - [Each](validators/Each.md) - [Key](validators/Key.md) - [KeySet](validators/KeySet.md) - [Lazy](validators/Lazy.md) -- [NoneOf](validators/NoneOf.md) +- [LogicAnd](validators/LogicAnd.md) +- [LogicCond](validators/LogicCond.md) +- [LogicNor](validators/LogicNor.md) +- [LogicOr](validators/LogicOr.md) +- [LogicXor](validators/LogicXor.md) - [Not](validators/Not.md) - [NullOr](validators/NullOr.md) -- [OneOf](validators/OneOf.md) - [Property](validators/Property.md) - [PropertyOptional](validators/PropertyOptional.md) - [UndefOr](validators/UndefOr.md) -- [When](validators/When.md) ## Numbers @@ -303,12 +311,10 @@ ## Alphabetically - [All](validators/All.md) -- [AllOf](validators/AllOf.md) - [Alnum](validators/Alnum.md) - [Alpha](validators/Alpha.md) - [AlwaysInvalid](validators/AlwaysInvalid.md) - [AlwaysValid](validators/AlwaysValid.md) -- [AnyOf](validators/AnyOf.md) - [ArrayType](validators/ArrayType.md) - [ArrayVal](validators/ArrayVal.md) - [Attributes](validators/Attributes.md) @@ -392,6 +398,11 @@ - [Length](validators/Length.md) - [LessThan](validators/LessThan.md) - [LessThanOrEqual](validators/LessThanOrEqual.md) +- [LogicAnd](validators/LogicAnd.md) +- [LogicCond](validators/LogicCond.md) +- [LogicNor](validators/LogicNor.md) +- [LogicOr](validators/LogicOr.md) +- [LogicXor](validators/LogicXor.md) - [Lowercase](validators/Lowercase.md) - [Luhn](validators/Luhn.md) - [MacAddress](validators/MacAddress.md) @@ -404,7 +415,6 @@ - [NfeAccessKey](validators/NfeAccessKey.md) - [Nif](validators/Nif.md) - [Nip](validators/Nip.md) -- [NoneOf](validators/NoneOf.md) - [Not](validators/Not.md) - [NullOr](validators/NullOr.md) - [NullType](validators/NullType.md) @@ -412,7 +422,6 @@ - [NumericVal](validators/NumericVal.md) - [ObjectType](validators/ObjectType.md) - [Odd](validators/Odd.md) -- [OneOf](validators/OneOf.md) - [PerfectSquare](validators/PerfectSquare.md) - [Pesel](validators/Pesel.md) - [Phone](validators/Phone.md) @@ -460,6 +469,5 @@ - [Version](validators/Version.md) - [VideoUrl](validators/VideoUrl.md) - [Vowel](validators/Vowel.md) -- [When](validators/When.md) - [Writable](validators/Writable.md) - [Xdigit](validators/Xdigit.md) diff --git a/docs/validators/AlwaysInvalid.md b/docs/validators/AlwaysInvalid.md index c7d23def8..683532b4c 100644 --- a/docs/validators/AlwaysInvalid.md +++ b/docs/validators/AlwaysInvalid.md @@ -45,4 +45,4 @@ v::alwaysInvalid()->isValid('whatever'); // false See also: - [AlwaysValid](AlwaysValid.md) -- [When](When.md) +- [LogicCond](LogicCond.md) diff --git a/docs/validators/Attributes.md b/docs/validators/Attributes.md index 41cf3b40b..599742ec0 100644 --- a/docs/validators/Attributes.md +++ b/docs/validators/Attributes.md @@ -9,7 +9,7 @@ Example of object: ```php use Respect\Validation\Validators as Validator; -#[Validator\AnyOf( +#[Validator\LogicOr( new Validator\Property('email', new Validator\Not(new Validator\Undef())), new Validator\Property('phone', new Validator\Not(new Validator\Undef())), )] diff --git a/docs/validators/Circuit.md b/docs/validators/Circuit.md index b67a47961..e8e43b2e1 100644 --- a/docs/validators/Circuit.md +++ b/docs/validators/Circuit.md @@ -17,7 +17,7 @@ v::circuit( ``` You need a valid country code to create a [SubdivisionCode](SubdivisionCode.md), so it makes sense only to validate the -subdivision code only if the country code is valid. In this case, you could also have used [When](When.md), but you +subdivision code only if the country code is valid. In this case, you could also have used [LogicCond](LogicCond.md), but you would then have to write `v::key('countryCode', v::countryCode())` twice in your chain. ## Templates @@ -40,10 +40,10 @@ This validator does not have any templates, because it will always return the re See also: -- [AllOf](AllOf.md) -- [AnyOf](AnyOf.md) - [Lazy](Lazy.md) -- [NoneOf](NoneOf.md) -- [OneOf](OneOf.md) +- [LogicAnd](LogicAnd.md) +- [LogicCond](LogicCond.md) +- [LogicNor](LogicNor.md) +- [LogicOr](LogicOr.md) +- [LogicXor](LogicXor.md) - [SubdivisionCode](SubdivisionCode.md) -- [When](When.md) diff --git a/docs/validators/ContainsAny.md b/docs/validators/ContainsAny.md index d323e9717..522ccdfa2 100644 --- a/docs/validators/ContainsAny.md +++ b/docs/validators/ContainsAny.md @@ -53,7 +53,7 @@ Message template for this validator includes `{{needles}}`. See also: -- [AnyOf](AnyOf.md) - [Contains](Contains.md) - [Equivalent](Equivalent.md) - [In](In.md) +- [LogicOr](LogicOr.md) diff --git a/docs/validators/AllOf.md b/docs/validators/LogicAnd.md similarity index 56% rename from docs/validators/AllOf.md rename to docs/validators/LogicAnd.md index adb90f7f7..7e608daaf 100644 --- a/docs/validators/AllOf.md +++ b/docs/validators/LogicAnd.md @@ -1,16 +1,16 @@ -# AllOf +# LogicAnd -- `AllOf(Validator $validator1, Validator $validator2, Validator ...$validator)` +- `LogicAnd(Validator $validator1, Validator $validator2, Validator ...$validator)` -Will validate if all inner validators validates. +Validates that all inner validators pass, applying AND logic. ```php -v::allOf(v::intVal(), v::positive())->isValid(15); // true +v::logicAnd(v::intVal(), v::positive())->isValid(15); // true ``` ## Templates -### `AllOf::TEMPLATE_SOME` +### `LogicAnd::TEMPLATE_SOME` Used when some validators must be failed. @@ -19,7 +19,7 @@ Used when some validators must be failed. | `default` | {{subject}} must pass the rules | | `inverted` | {{subject}} must pass the rules | -### `AllOf::TEMPLATE_ALL` +### `LogicAnd::TEMPLATE_ALL` Used when all validators have failed. @@ -37,21 +37,22 @@ Used when all validators have failed. ## Categorization - Composite +- Logical - Nesting ## Changelog -| Version | Description | -| ------: | -------------------------------------------- | -| 3.0.0 | Require at least two validators to be passed | -| 0.3.9 | Created | +| Version | Description | +| ------: | --------------------------------------------------------- | +| 3.0.0 | Require at least two validators and renamed to `LogicAnd` | +| 0.3.9 | Created as `AllOf` | --- See also: -- [AnyOf](AnyOf.md) - [Circuit](Circuit.md) -- [NoneOf](NoneOf.md) -- [OneOf](OneOf.md) -- [When](When.md) +- [LogicCond](LogicCond.md) +- [LogicNor](LogicNor.md) +- [LogicOr](LogicOr.md) +- [LogicXor](LogicXor.md) diff --git a/docs/validators/LogicCond.md b/docs/validators/LogicCond.md new file mode 100644 index 000000000..ac84efae1 --- /dev/null +++ b/docs/validators/LogicCond.md @@ -0,0 +1,53 @@ +# LogicCond + +- `LogicCond(Validator $if, Validator $then)` +- `LogicCond(Validator $if, Validator $then, Validator $else)` + +A conditional validator that applies logic based on the validation results. + +If the `$if` validator passes, it applies the `$then` validator. If the `$if` validator fails, it applies the `$else` validator (if provided); otherwise, validation fails. + +```php +v::logicCond(v::intVal(), v::positive(), v::notBlank())->isValid(1); // true +v::logicCond(v::intVal(), v::positive(), v::notBlank())->isValid('non-blank string'); // true + +v::logicCond(v::intVal(), v::positive(), v::notBlank())->isValid(-1); // false +v::logicCond(v::intVal(), v::positive(), v::notBlank())->isValid(''); // false +``` + +In the sample above, if `$input` is an integer, then it must be positive. +If `$input` is not an integer, then it must not be blank. +When `$else` is not defined use [AlwaysInvalid](AlwaysInvalid.md) + +## Templates + +## Template placeholders + +| Placeholder | Description | +| ----------- | ---------------------------------------------------------------- | +| `subject` | The validated input or the custom validator name (if specified). | + +## Categorization + +- Conditions +- Logical +- Nesting + +## Changelog + +| Version | Description | +| ------: | ----------------------------------- | +| 3.0.0 | Renamed to `LogicCond` | +| 0.8.0 | Allow to use validator without else | +| 0.3.9 | Created as `When` | + +--- + +See also: + +- [AlwaysInvalid](AlwaysInvalid.md) +- [Circuit](Circuit.md) +- [LogicAnd](LogicAnd.md) +- [LogicNor](LogicNor.md) +- [LogicOr](LogicOr.md) +- [LogicXor](LogicXor.md) diff --git a/docs/validators/NoneOf.md b/docs/validators/LogicNor.md similarity index 57% rename from docs/validators/NoneOf.md rename to docs/validators/LogicNor.md index d525e2d04..223861d46 100644 --- a/docs/validators/NoneOf.md +++ b/docs/validators/LogicNor.md @@ -1,21 +1,21 @@ -# NoneOf +# LogicNor -- `NoneOf(Validator $validator1, Validator $validator2, Validator ...$validator)` +- `LogicNor(Validator $validator1, Validator $validator2, Validator ...$validator)` -Validates if NONE of the given validators validate: +Validates that none of the inner validators pass, applying NOR logic. ```php -v::noneOf( +v::logicNor( v::intVal(), v::floatVal() )->isValid('foo'); // true ``` -In the sample above, 'foo' isn't a integer nor a float, so noneOf returns true. +In the sample above, 'foo' isn't a integer nor a float, so logicNor returns true. ## Templates -### `NoneOf::TEMPLATE_SOME` +### `LogicNor::TEMPLATE_SOME` Used when some validators have passed. @@ -24,7 +24,7 @@ Used when some validators have passed. | `default` | {{subject}} must pass the rules | | `inverted` | {{subject}} must pass the rules | -### `NoneOf::TEMPLATE_ALL` +### `LogicNor::TEMPLATE_ALL` Used when all validators have passed. @@ -42,22 +42,23 @@ Used when all validators have passed. ## Categorization - Composite +- Logical - Nesting ## Changelog -| Version | Description | -| ------: | --------------------------------------------- | -| 3.0.0 | Require at least two validators to be defined | -| 0.3.9 | Created | +| Version | Description | +| ------: | --------------------------------------------------------- | +| 3.0.0 | Require at least two validators and renamed to `LogicNor` | +| 0.3.9 | Created as `NoneOf` | --- See also: -- [AllOf](AllOf.md) -- [AnyOf](AnyOf.md) - [Circuit](Circuit.md) +- [LogicAnd](LogicAnd.md) +- [LogicCond](LogicCond.md) +- [LogicOr](LogicOr.md) +- [LogicXor](LogicXor.md) - [Not](Not.md) -- [OneOf](OneOf.md) -- [When](When.md) diff --git a/docs/validators/AnyOf.md b/docs/validators/LogicOr.md similarity index 50% rename from docs/validators/AnyOf.md rename to docs/validators/LogicOr.md index 82e0e7a09..5a78a520d 100644 --- a/docs/validators/AnyOf.md +++ b/docs/validators/LogicOr.md @@ -1,21 +1,21 @@ -# AnyOf +# LogicOr -- `AnyOf(Validator $validator1, Validator $validator2, Validator ...$validator)` +- `LogicOr(Validator $validator1, Validator $validator2, Validator ...$validator)` -This is a group validator that acts as an OR operator. +Validates that at least one inner validator passes, applying OR logic. ```php -v::anyOf(v::intVal(), v::floatVal())->isValid(15.5); // true +v::logicOr(v::intVal(), v::floatVal())->isValid(15.5); // true ``` In the sample above, `IntVal()` doesn't validates, but `FloatVal()` validates, -so `AnyOf()` returns true. +so `LogicOr()` returns true. -`AnyOf()` returns true if at least one inner validator passes. +`LogicOr()` returns true if at least one inner validator passes. ## Templates -### `AnyOf::TEMPLATE_STANDARD` +### `LogicOr::TEMPLATE_STANDARD` | Mode | Template | | ---------- | ----------------------------------------------- | @@ -31,22 +31,23 @@ so `AnyOf()` returns true. ## Categorization - Composite +- Logical - Nesting ## Changelog -| Version | Description | -| ------: | --------------------------------------------- | -| 3.0.0 | Require at least two validators to be defined | -| 2.0.0 | Created | +| Version | Description | +| ------: | -------------------------------------------------------- | +| 3.0.0 | Require at least two validators and renamed to `LogicOr` | +| 2.0.0 | Created as `AnyOf` | --- See also: -- [AllOf](AllOf.md) - [Circuit](Circuit.md) - [ContainsAny](ContainsAny.md) -- [NoneOf](NoneOf.md) -- [OneOf](OneOf.md) -- [When](When.md) +- [LogicAnd](LogicAnd.md) +- [LogicCond](LogicCond.md) +- [LogicNor](LogicNor.md) +- [LogicXor](LogicXor.md) diff --git a/docs/validators/OneOf.md b/docs/validators/LogicXor.md similarity index 55% rename from docs/validators/OneOf.md rename to docs/validators/LogicXor.md index 54cca0a50..ce2215b68 100644 --- a/docs/validators/OneOf.md +++ b/docs/validators/LogicXor.md @@ -1,14 +1,14 @@ -# OneOf +# LogicXor -- `OneOf(Validator $validator1, Validator $validator2, Validator ...$validator)` +- `LogicXor(Validator $validator1, Validator $validator2, Validator ...$validator)` -Will validate if exactly one inner validator passes. +Validates that exactly one inner validator passes, applying XOR logic. ```php -v::oneOf(v::digit(), v::alpha())->isValid('AB'); // true -v::oneOf(v::digit(), v::alpha())->isValid('12'); // true -v::oneOf(v::digit(), v::alpha())->isValid('AB12'); // false -v::oneOf(v::digit(), v::alpha())->isValid('*'); // false +v::logicXor(v::digit(), v::alpha())->isValid('AB'); // true +v::logicXor(v::digit(), v::alpha())->isValid('12'); // true +v::logicXor(v::digit(), v::alpha())->isValid('AB12'); // false +v::logicXor(v::digit(), v::alpha())->isValid('*'); // false ``` The chains above validate if the input is either a digit or an alphabetic @@ -16,7 +16,7 @@ character, one or the other, but not neither nor both. ## Templates -### `OneOf::TEMPLATE_NONE` +### `LogicXor::TEMPLATE_NONE` Used when none of the validators have passed. @@ -25,7 +25,7 @@ Used when none of the validators have passed. | `default` | {{subject}} must pass one of the rules | | `inverted` | {{subject}} must pass one of the rules | -### `OneOf::TEMPLATE_MORE_THAN_ONE` +### `LogicXor::TEMPLATE_MORE_THAN_ONE` Used when more than one validator has passed. @@ -43,21 +43,22 @@ Used when more than one validator has passed. ## Categorization - Composite +- Logical - Nesting ## Changelog -| Version | Description | -| ------: | -------------------------------------------- | -| 3.0.0 | Require at least two validators to be passed | -| 0.3.9 | Created | +| Version | Description | +| ------: | --------------------------------------------------------- | +| 3.0.0 | Require at least two validators and renamed to `LogicXor` | +| 0.3.9 | Created as `OneOf` | --- See also: -- [AllOf](AllOf.md) -- [AnyOf](AnyOf.md) - [Circuit](Circuit.md) -- [NoneOf](NoneOf.md) -- [When](When.md) +- [LogicAnd](LogicAnd.md) +- [LogicCond](LogicCond.md) +- [LogicNor](LogicNor.md) +- [LogicOr](LogicOr.md) diff --git a/docs/validators/Not.md b/docs/validators/Not.md index ab4e5303b..078eef1bb 100644 --- a/docs/validators/Not.md +++ b/docs/validators/Not.md @@ -42,6 +42,6 @@ Each other validation has custom messages for negated validators. See also: +- [LogicNor](LogicNor.md) - [Named](Named.md) -- [NoneOf](NoneOf.md) - [Templated](Templated.md) diff --git a/docs/validators/PublicDomainSuffix.md b/docs/validators/PublicDomainSuffix.md index 118e754e5..e520dbfca 100644 --- a/docs/validators/PublicDomainSuffix.md +++ b/docs/validators/PublicDomainSuffix.md @@ -15,7 +15,7 @@ This validator will not match top level domains such as `tk`. If you want to match either, use a combination with `Tld`: ```php -v::oneOf(v::tld(), v::publicDomainSuffix())->isValid('tk'); // true +v::logicXor(v::tld(), v::publicDomainSuffix())->isValid('tk'); // true ``` ## Templates diff --git a/docs/validators/When.md b/docs/validators/When.md deleted file mode 100644 index 69f3f576e..000000000 --- a/docs/validators/When.md +++ /dev/null @@ -1,52 +0,0 @@ -# When - -- `When(Validator $if, Validator $then)` -- `When(Validator $if, Validator $then, Validator $else)` - -A ternary validator that accepts three parameters. - -When the `$if` validates, returns validation for `$then`. -When the `$if` doesn't validate, returns validation for `$else`, if defined. - -```php -v::when(v::intVal(), v::positive(), v::notBlank())->isValid(1); // true -v::when(v::intVal(), v::positive(), v::notBlank())->isValid('non-blank string'); // true - -v::when(v::intVal(), v::positive(), v::notBlank())->isValid(-1); // false -v::when(v::intVal(), v::positive(), v::notBlank())->isValid(''); // false -``` - -In the sample above, if `$input` is an integer, then it must be positive. -If `$input` is not an integer, then it must not be blank. -When `$else` is not defined use [AlwaysInvalid](AlwaysInvalid.md) - -## Templates - -## Template placeholders - -| Placeholder | Description | -| ----------- | ---------------------------------------------------------------- | -| `subject` | The validated input or the custom validator name (if specified). | - -## Categorization - -- Conditions -- Nesting - -## Changelog - -| Version | Description | -| ------: | ----------------------------------- | -| 0.8.0 | Allow to use validator without else | -| 0.3.9 | Created | - ---- - -See also: - -- [AllOf](AllOf.md) -- [AlwaysInvalid](AlwaysInvalid.md) -- [AnyOf](AnyOf.md) -- [Circuit](Circuit.md) -- [NoneOf](NoneOf.md) -- [OneOf](OneOf.md) diff --git a/library/Mixins/AllBuilder.php b/library/Mixins/AllBuilder.php index 6a1c5e0b0..258fc3a9a 100644 --- a/library/Mixins/AllBuilder.php +++ b/library/Mixins/AllBuilder.php @@ -14,8 +14,6 @@ interface AllBuilder { - public static function allAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function allAlnum(string ...$additionalChars): Chain; public static function allAlpha(string ...$additionalChars): Chain; @@ -24,8 +22,6 @@ public static function allAlwaysInvalid(): Chain; public static function allAlwaysValid(): Chain; - public static function allAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function allArrayType(): Chain; public static function allArrayVal(): Chain; @@ -195,6 +191,28 @@ public static function allLessThan(mixed $compareTo): Chain; public static function allLessThanOrEqual(mixed $compareTo): Chain; + public static function allLogicAnd( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function allLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public static function allLogicNor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function allLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public static function allLogicXor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function allLowercase(): Chain; public static function allLuhn(): Chain; @@ -217,8 +235,6 @@ public static function allNif(): Chain; public static function allNip(): Chain; - public static function allNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function allNot(Validator $validator): Chain; public static function allNullType(): Chain; @@ -231,8 +247,6 @@ public static function allObjectType(): Chain; public static function allOdd(): Chain; - public static function allOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function allPerfectSquare(): Chain; public static function allPesel(): Chain; @@ -317,8 +331,6 @@ public static function allVideoUrl(string|null $service = null): Chain; public static function allVowel(string ...$additionalChars): Chain; - public static function allWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public static function allWritable(): Chain; public static function allXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/AllChain.php b/library/Mixins/AllChain.php index f3d1a6ad2..c9347688c 100644 --- a/library/Mixins/AllChain.php +++ b/library/Mixins/AllChain.php @@ -14,8 +14,6 @@ interface AllChain { - public function allAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function allAlnum(string ...$additionalChars): Chain; public function allAlpha(string ...$additionalChars): Chain; @@ -24,8 +22,6 @@ public function allAlwaysInvalid(): Chain; public function allAlwaysValid(): Chain; - public function allAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function allArrayType(): Chain; public function allArrayVal(): Chain; @@ -195,6 +191,16 @@ public function allLessThan(mixed $compareTo): Chain; public function allLessThanOrEqual(mixed $compareTo): Chain; + public function allLogicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function allLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public function allLogicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function allLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function allLogicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public function allLowercase(): Chain; public function allLuhn(): Chain; @@ -217,8 +223,6 @@ public function allNif(): Chain; public function allNip(): Chain; - public function allNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function allNot(Validator $validator): Chain; public function allNullType(): Chain; @@ -231,8 +235,6 @@ public function allObjectType(): Chain; public function allOdd(): Chain; - public function allOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function allPerfectSquare(): Chain; public function allPesel(): Chain; @@ -317,8 +319,6 @@ public function allVideoUrl(string|null $service = null): Chain; public function allVowel(string ...$additionalChars): Chain; - public function allWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public function allWritable(): Chain; public function allXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/Builder.php b/library/Mixins/Builder.php index 895096289..abb956a1c 100644 --- a/library/Mixins/Builder.php +++ b/library/Mixins/Builder.php @@ -26,8 +26,6 @@ interface Builder extends { public static function all(Validator $validator): Chain; - public static function allOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function alnum(string ...$additionalChars): Chain; public static function alpha(string ...$additionalChars): Chain; @@ -36,8 +34,6 @@ public static function alwaysInvalid(): Chain; public static function alwaysValid(): Chain; - public static function anyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function arrayType(): Chain; public static function arrayVal(): Chain; @@ -219,6 +215,16 @@ public static function lessThan(mixed $compareTo): Chain; public static function lessThanOrEqual(mixed $compareTo): Chain; + public static function logicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public static function logicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public static function logicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public static function logicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public static function logicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public static function lowercase(): Chain; public static function luhn(): Chain; @@ -243,8 +249,6 @@ public static function nif(): Chain; public static function nip(): Chain; - public static function noneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function not(Validator $validator): Chain; public static function nullOr(Validator $validator): Chain; @@ -259,8 +263,6 @@ public static function objectType(): Chain; public static function odd(): Chain; - public static function oneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function perfectSquare(): Chain; public static function pesel(): Chain; @@ -356,8 +358,6 @@ public static function videoUrl(string|null $service = null): Chain; public static function vowel(string ...$additionalChars): Chain; - public static function when(Validator $when, Validator $then, Validator|null $else = null): Chain; - public static function writable(): Chain; public static function xdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/Chain.php b/library/Mixins/Chain.php index aa05d64e0..7bda89a16 100644 --- a/library/Mixins/Chain.php +++ b/library/Mixins/Chain.php @@ -29,8 +29,6 @@ interface Chain extends { public function all(Validator $validator): Chain; - public function allOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function alnum(string ...$additionalChars): Chain; public function alpha(string ...$additionalChars): Chain; @@ -39,8 +37,6 @@ public function alwaysInvalid(): Chain; public function alwaysValid(): Chain; - public function anyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function arrayType(): Chain; public function arrayVal(): Chain; @@ -222,6 +218,16 @@ public function lessThan(mixed $compareTo): Chain; public function lessThanOrEqual(mixed $compareTo): Chain; + public function logicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function logicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public function logicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function logicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function logicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public function lowercase(): Chain; public function luhn(): Chain; @@ -246,8 +252,6 @@ public function nif(): Chain; public function nip(): Chain; - public function noneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function not(Validator $validator): Chain; public function nullOr(Validator $validator): Chain; @@ -262,8 +266,6 @@ public function objectType(): Chain; public function odd(): Chain; - public function oneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function perfectSquare(): Chain; public function pesel(): Chain; @@ -359,8 +361,6 @@ public function videoUrl(string|null $service = null): Chain; public function vowel(string ...$additionalChars): Chain; - public function when(Validator $when, Validator $then, Validator|null $else = null): Chain; - public function writable(): Chain; public function xdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/KeyBuilder.php b/library/Mixins/KeyBuilder.php index 1c0148631..00b57e62f 100644 --- a/library/Mixins/KeyBuilder.php +++ b/library/Mixins/KeyBuilder.php @@ -16,13 +16,6 @@ interface KeyBuilder { public static function keyAll(int|string $key, Validator $validator): Chain; - public static function keyAllOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function keyAlnum(int|string $key, string ...$additionalChars): Chain; public static function keyAlpha(int|string $key, string ...$additionalChars): Chain; @@ -31,13 +24,6 @@ public static function keyAlwaysInvalid(int|string $key): Chain; public static function keyAlwaysValid(int|string $key): Chain; - public static function keyAnyOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function keyArrayType(int|string $key): Chain; public static function keyArrayVal(int|string $key): Chain; @@ -214,6 +200,41 @@ public static function keyLessThan(int|string $key, mixed $compareTo): Chain; public static function keyLessThanOrEqual(int|string $key, mixed $compareTo): Chain; + public static function keyLogicAnd( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function keyLogicCond( + int|string $key, + Validator $logicCond, + Validator $then, + Validator|null $else = null, + ): Chain; + + public static function keyLogicNor( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function keyLogicOr( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function keyLogicXor( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function keyLowercase(int|string $key): Chain; public static function keyLuhn(int|string $key): Chain; @@ -236,13 +257,6 @@ public static function keyNif(int|string $key): Chain; public static function keyNip(int|string $key): Chain; - public static function keyNoneOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function keyNot(int|string $key, Validator $validator): Chain; public static function keyNullType(int|string $key): Chain; @@ -255,13 +269,6 @@ public static function keyObjectType(int|string $key): Chain; public static function keyOdd(int|string $key): Chain; - public static function keyOneOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function keyPerfectSquare(int|string $key): Chain; public static function keyPesel(int|string $key): Chain; @@ -346,13 +353,6 @@ public static function keyVideoUrl(int|string $key, string|null $service = null) public static function keyVowel(int|string $key, string ...$additionalChars): Chain; - public static function keyWhen( - int|string $key, - Validator $when, - Validator $then, - Validator|null $else = null, - ): Chain; - public static function keyWritable(int|string $key): Chain; public static function keyXdigit(int|string $key, string ...$additionalChars): Chain; diff --git a/library/Mixins/KeyChain.php b/library/Mixins/KeyChain.php index 1fb2a3b1f..f4c7c9a04 100644 --- a/library/Mixins/KeyChain.php +++ b/library/Mixins/KeyChain.php @@ -16,13 +16,6 @@ interface KeyChain { public function keyAll(int|string $key, Validator $validator): Chain; - public function keyAllOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function keyAlnum(int|string $key, string ...$additionalChars): Chain; public function keyAlpha(int|string $key, string ...$additionalChars): Chain; @@ -31,13 +24,6 @@ public function keyAlwaysInvalid(int|string $key): Chain; public function keyAlwaysValid(int|string $key): Chain; - public function keyAnyOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function keyArrayType(int|string $key): Chain; public function keyArrayVal(int|string $key): Chain; @@ -214,6 +200,41 @@ public function keyLessThan(int|string $key, mixed $compareTo): Chain; public function keyLessThanOrEqual(int|string $key, mixed $compareTo): Chain; + public function keyLogicAnd( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function keyLogicCond( + int|string $key, + Validator $logicCond, + Validator $then, + Validator|null $else = null, + ): Chain; + + public function keyLogicNor( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function keyLogicOr( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function keyLogicXor( + int|string $key, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public function keyLowercase(int|string $key): Chain; public function keyLuhn(int|string $key): Chain; @@ -236,13 +257,6 @@ public function keyNif(int|string $key): Chain; public function keyNip(int|string $key): Chain; - public function keyNoneOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function keyNot(int|string $key, Validator $validator): Chain; public function keyNullType(int|string $key): Chain; @@ -255,13 +269,6 @@ public function keyObjectType(int|string $key): Chain; public function keyOdd(int|string $key): Chain; - public function keyOneOf( - int|string $key, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function keyPerfectSquare(int|string $key): Chain; public function keyPesel(int|string $key): Chain; @@ -346,8 +353,6 @@ public function keyVideoUrl(int|string $key, string|null $service = null): Chain public function keyVowel(int|string $key, string ...$additionalChars): Chain; - public function keyWhen(int|string $key, Validator $when, Validator $then, Validator|null $else = null): Chain; - public function keyWritable(int|string $key): Chain; public function keyXdigit(int|string $key, string ...$additionalChars): Chain; diff --git a/library/Mixins/NotBuilder.php b/library/Mixins/NotBuilder.php index 4b74cdd85..172f4b534 100644 --- a/library/Mixins/NotBuilder.php +++ b/library/Mixins/NotBuilder.php @@ -16,8 +16,6 @@ interface NotBuilder { public static function notAll(Validator $validator): Chain; - public static function notAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function notAlnum(string ...$additionalChars): Chain; public static function notAlpha(string ...$additionalChars): Chain; @@ -26,8 +24,6 @@ public static function notAlwaysInvalid(): Chain; public static function notAlwaysValid(): Chain; - public static function notAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function notArrayType(): Chain; public static function notArrayVal(): Chain; @@ -207,6 +203,28 @@ public static function notLessThan(mixed $compareTo): Chain; public static function notLessThanOrEqual(mixed $compareTo): Chain; + public static function notLogicAnd( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function notLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public static function notLogicNor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function notLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public static function notLogicXor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function notLowercase(): Chain; public static function notLuhn(): Chain; @@ -229,8 +247,6 @@ public static function notNif(): Chain; public static function notNip(): Chain; - public static function notNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function notNullType(): Chain; public static function notNumber(): Chain; @@ -241,8 +257,6 @@ public static function notObjectType(): Chain; public static function notOdd(): Chain; - public static function notOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public static function notPerfectSquare(): Chain; public static function notPesel(): Chain; @@ -333,8 +347,6 @@ public static function notVideoUrl(string|null $service = null): Chain; public static function notVowel(string ...$additionalChars): Chain; - public static function notWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public static function notWritable(): Chain; public static function notXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/NotChain.php b/library/Mixins/NotChain.php index b7451696b..29d6f68cb 100644 --- a/library/Mixins/NotChain.php +++ b/library/Mixins/NotChain.php @@ -16,8 +16,6 @@ interface NotChain { public function notAll(Validator $validator): Chain; - public function notAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function notAlnum(string ...$additionalChars): Chain; public function notAlpha(string ...$additionalChars): Chain; @@ -26,8 +24,6 @@ public function notAlwaysInvalid(): Chain; public function notAlwaysValid(): Chain; - public function notAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function notArrayType(): Chain; public function notArrayVal(): Chain; @@ -207,6 +203,16 @@ public function notLessThan(mixed $compareTo): Chain; public function notLessThanOrEqual(mixed $compareTo): Chain; + public function notLogicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function notLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public function notLogicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function notLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function notLogicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public function notLowercase(): Chain; public function notLuhn(): Chain; @@ -229,8 +235,6 @@ public function notNif(): Chain; public function notNip(): Chain; - public function notNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function notNullType(): Chain; public function notNumber(): Chain; @@ -241,8 +245,6 @@ public function notObjectType(): Chain; public function notOdd(): Chain; - public function notOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function notPerfectSquare(): Chain; public function notPesel(): Chain; @@ -333,8 +335,6 @@ public function notVideoUrl(string|null $service = null): Chain; public function notVowel(string ...$additionalChars): Chain; - public function notWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public function notWritable(): Chain; public function notXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/NullOrBuilder.php b/library/Mixins/NullOrBuilder.php index 5b5b6b2d3..105f69727 100644 --- a/library/Mixins/NullOrBuilder.php +++ b/library/Mixins/NullOrBuilder.php @@ -16,12 +16,6 @@ interface NullOrBuilder { public static function nullOrAll(Validator $validator): Chain; - public static function nullOrAllOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function nullOrAlnum(string ...$additionalChars): Chain; public static function nullOrAlpha(string ...$additionalChars): Chain; @@ -30,12 +24,6 @@ public static function nullOrAlwaysInvalid(): Chain; public static function nullOrAlwaysValid(): Chain; - public static function nullOrAnyOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function nullOrArrayType(): Chain; public static function nullOrArrayVal(): Chain; @@ -219,6 +207,32 @@ public static function nullOrLessThan(mixed $compareTo): Chain; public static function nullOrLessThanOrEqual(mixed $compareTo): Chain; + public static function nullOrLogicAnd( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function nullOrLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public static function nullOrLogicNor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function nullOrLogicOr( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function nullOrLogicXor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function nullOrLowercase(): Chain; public static function nullOrLuhn(): Chain; @@ -241,12 +255,6 @@ public static function nullOrNif(): Chain; public static function nullOrNip(): Chain; - public static function nullOrNoneOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function nullOrNot(Validator $validator): Chain; public static function nullOrNullType(): Chain; @@ -259,12 +267,6 @@ public static function nullOrObjectType(): Chain; public static function nullOrOdd(): Chain; - public static function nullOrOneOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function nullOrPerfectSquare(): Chain; public static function nullOrPesel(): Chain; @@ -353,8 +355,6 @@ public static function nullOrVideoUrl(string|null $service = null): Chain; public static function nullOrVowel(string ...$additionalChars): Chain; - public static function nullOrWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public static function nullOrWritable(): Chain; public static function nullOrXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/NullOrChain.php b/library/Mixins/NullOrChain.php index ac07de4ba..3b0e68663 100644 --- a/library/Mixins/NullOrChain.php +++ b/library/Mixins/NullOrChain.php @@ -16,8 +16,6 @@ interface NullOrChain { public function nullOrAll(Validator $validator): Chain; - public function nullOrAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function nullOrAlnum(string ...$additionalChars): Chain; public function nullOrAlpha(string ...$additionalChars): Chain; @@ -26,8 +24,6 @@ public function nullOrAlwaysInvalid(): Chain; public function nullOrAlwaysValid(): Chain; - public function nullOrAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function nullOrArrayType(): Chain; public function nullOrArrayVal(): Chain; @@ -207,6 +203,16 @@ public function nullOrLessThan(mixed $compareTo): Chain; public function nullOrLessThanOrEqual(mixed $compareTo): Chain; + public function nullOrLogicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function nullOrLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public function nullOrLogicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function nullOrLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function nullOrLogicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public function nullOrLowercase(): Chain; public function nullOrLuhn(): Chain; @@ -229,8 +235,6 @@ public function nullOrNif(): Chain; public function nullOrNip(): Chain; - public function nullOrNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function nullOrNot(Validator $validator): Chain; public function nullOrNullType(): Chain; @@ -243,8 +247,6 @@ public function nullOrObjectType(): Chain; public function nullOrOdd(): Chain; - public function nullOrOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function nullOrPerfectSquare(): Chain; public function nullOrPesel(): Chain; @@ -333,8 +335,6 @@ public function nullOrVideoUrl(string|null $service = null): Chain; public function nullOrVowel(string ...$additionalChars): Chain; - public function nullOrWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public function nullOrWritable(): Chain; public function nullOrXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/PropertyBuilder.php b/library/Mixins/PropertyBuilder.php index 3776fadf8..0e41cd92f 100644 --- a/library/Mixins/PropertyBuilder.php +++ b/library/Mixins/PropertyBuilder.php @@ -16,13 +16,6 @@ interface PropertyBuilder { public static function propertyAll(string $propertyName, Validator $validator): Chain; - public static function propertyAllOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function propertyAlnum(string $propertyName, string ...$additionalChars): Chain; public static function propertyAlpha(string $propertyName, string ...$additionalChars): Chain; @@ -31,13 +24,6 @@ public static function propertyAlwaysInvalid(string $propertyName): Chain; public static function propertyAlwaysValid(string $propertyName): Chain; - public static function propertyAnyOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function propertyArrayType(string $propertyName): Chain; public static function propertyArrayVal(string $propertyName): Chain; @@ -218,6 +204,41 @@ public static function propertyLessThan(string $propertyName, mixed $compareTo): public static function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): Chain; + public static function propertyLogicAnd( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function propertyLogicCond( + string $propertyName, + Validator $logicCond, + Validator $then, + Validator|null $else = null, + ): Chain; + + public static function propertyLogicNor( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function propertyLogicOr( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function propertyLogicXor( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function propertyLowercase(string $propertyName): Chain; public static function propertyLuhn(string $propertyName): Chain; @@ -240,13 +261,6 @@ public static function propertyNif(string $propertyName): Chain; public static function propertyNip(string $propertyName): Chain; - public static function propertyNoneOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function propertyNot(string $propertyName, Validator $validator): Chain; public static function propertyNullType(string $propertyName): Chain; @@ -259,13 +273,6 @@ public static function propertyObjectType(string $propertyName): Chain; public static function propertyOdd(string $propertyName): Chain; - public static function propertyOneOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function propertyPerfectSquare(string $propertyName): Chain; public static function propertyPesel(string $propertyName): Chain; @@ -358,13 +365,6 @@ public static function propertyVideoUrl(string $propertyName, string|null $servi public static function propertyVowel(string $propertyName, string ...$additionalChars): Chain; - public static function propertyWhen( - string $propertyName, - Validator $when, - Validator $then, - Validator|null $else = null, - ): Chain; - public static function propertyWritable(string $propertyName): Chain; public static function propertyXdigit(string $propertyName, string ...$additionalChars): Chain; diff --git a/library/Mixins/PropertyChain.php b/library/Mixins/PropertyChain.php index 01d28304e..2d305483a 100644 --- a/library/Mixins/PropertyChain.php +++ b/library/Mixins/PropertyChain.php @@ -16,13 +16,6 @@ interface PropertyChain { public function propertyAll(string $propertyName, Validator $validator): Chain; - public function propertyAllOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function propertyAlnum(string $propertyName, string ...$additionalChars): Chain; public function propertyAlpha(string $propertyName, string ...$additionalChars): Chain; @@ -31,13 +24,6 @@ public function propertyAlwaysInvalid(string $propertyName): Chain; public function propertyAlwaysValid(string $propertyName): Chain; - public function propertyAnyOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function propertyArrayType(string $propertyName): Chain; public function propertyArrayVal(string $propertyName): Chain; @@ -214,6 +200,41 @@ public function propertyLessThan(string $propertyName, mixed $compareTo): Chain; public function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): Chain; + public function propertyLogicAnd( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function propertyLogicCond( + string $propertyName, + Validator $logicCond, + Validator $then, + Validator|null $else = null, + ): Chain; + + public function propertyLogicNor( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function propertyLogicOr( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public function propertyLogicXor( + string $propertyName, + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public function propertyLowercase(string $propertyName): Chain; public function propertyLuhn(string $propertyName): Chain; @@ -236,13 +257,6 @@ public function propertyNif(string $propertyName): Chain; public function propertyNip(string $propertyName): Chain; - public function propertyNoneOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function propertyNot(string $propertyName, Validator $validator): Chain; public function propertyNullType(string $propertyName): Chain; @@ -255,13 +269,6 @@ public function propertyObjectType(string $propertyName): Chain; public function propertyOdd(string $propertyName): Chain; - public function propertyOneOf( - string $propertyName, - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public function propertyPerfectSquare(string $propertyName): Chain; public function propertyPesel(string $propertyName): Chain; @@ -346,13 +353,6 @@ public function propertyVideoUrl(string $propertyName, string|null $service = nu public function propertyVowel(string $propertyName, string ...$additionalChars): Chain; - public function propertyWhen( - string $propertyName, - Validator $when, - Validator $then, - Validator|null $else = null, - ): Chain; - public function propertyWritable(string $propertyName): Chain; public function propertyXdigit(string $propertyName, string ...$additionalChars): Chain; diff --git a/library/Mixins/UndefOrBuilder.php b/library/Mixins/UndefOrBuilder.php index 5c2db3c33..d3bc73f88 100644 --- a/library/Mixins/UndefOrBuilder.php +++ b/library/Mixins/UndefOrBuilder.php @@ -16,12 +16,6 @@ interface UndefOrBuilder { public static function undefOrAll(Validator $validator): Chain; - public static function undefOrAllOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function undefOrAlnum(string ...$additionalChars): Chain; public static function undefOrAlpha(string ...$additionalChars): Chain; @@ -30,12 +24,6 @@ public static function undefOrAlwaysInvalid(): Chain; public static function undefOrAlwaysValid(): Chain; - public static function undefOrAnyOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function undefOrArrayType(): Chain; public static function undefOrArrayVal(): Chain; @@ -217,6 +205,32 @@ public static function undefOrLessThan(mixed $compareTo): Chain; public static function undefOrLessThanOrEqual(mixed $compareTo): Chain; + public static function undefOrLogicAnd( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function undefOrLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public static function undefOrLogicNor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function undefOrLogicOr( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + + public static function undefOrLogicXor( + Validator $validator1, + Validator $validator2, + Validator ...$validators, + ): Chain; + public static function undefOrLowercase(): Chain; public static function undefOrLuhn(): Chain; @@ -239,12 +253,6 @@ public static function undefOrNif(): Chain; public static function undefOrNip(): Chain; - public static function undefOrNoneOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function undefOrNot(Validator $validator): Chain; public static function undefOrNullType(): Chain; @@ -257,12 +265,6 @@ public static function undefOrObjectType(): Chain; public static function undefOrOdd(): Chain; - public static function undefOrOneOf( - Validator $validator1, - Validator $validator2, - Validator ...$validators, - ): Chain; - public static function undefOrPerfectSquare(): Chain; public static function undefOrPesel(): Chain; @@ -351,8 +353,6 @@ public static function undefOrVideoUrl(string|null $service = null): Chain; public static function undefOrVowel(string ...$additionalChars): Chain; - public static function undefOrWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public static function undefOrWritable(): Chain; public static function undefOrXdigit(string ...$additionalChars): Chain; diff --git a/library/Mixins/UndefOrChain.php b/library/Mixins/UndefOrChain.php index 01bafeeca..36dc7c30f 100644 --- a/library/Mixins/UndefOrChain.php +++ b/library/Mixins/UndefOrChain.php @@ -16,8 +16,6 @@ interface UndefOrChain { public function undefOrAll(Validator $validator): Chain; - public function undefOrAllOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function undefOrAlnum(string ...$additionalChars): Chain; public function undefOrAlpha(string ...$additionalChars): Chain; @@ -26,8 +24,6 @@ public function undefOrAlwaysInvalid(): Chain; public function undefOrAlwaysValid(): Chain; - public function undefOrAnyOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function undefOrArrayType(): Chain; public function undefOrArrayVal(): Chain; @@ -205,6 +201,16 @@ public function undefOrLessThan(mixed $compareTo): Chain; public function undefOrLessThanOrEqual(mixed $compareTo): Chain; + public function undefOrLogicAnd(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function undefOrLogicCond(Validator $logicCond, Validator $then, Validator|null $else = null): Chain; + + public function undefOrLogicNor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function undefOrLogicOr(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + + public function undefOrLogicXor(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; + public function undefOrLowercase(): Chain; public function undefOrLuhn(): Chain; @@ -227,8 +233,6 @@ public function undefOrNif(): Chain; public function undefOrNip(): Chain; - public function undefOrNoneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function undefOrNot(Validator $validator): Chain; public function undefOrNullType(): Chain; @@ -241,8 +245,6 @@ public function undefOrObjectType(): Chain; public function undefOrOdd(): Chain; - public function undefOrOneOf(Validator $validator1, Validator $validator2, Validator ...$validators): Chain; - public function undefOrPerfectSquare(): Chain; public function undefOrPesel(): Chain; @@ -331,8 +333,6 @@ public function undefOrVideoUrl(string|null $service = null): Chain; public function undefOrVowel(string ...$additionalChars): Chain; - public function undefOrWhen(Validator $when, Validator $then, Validator|null $else = null): Chain; - public function undefOrWritable(): Chain; public function undefOrXdigit(string ...$additionalChars): Chain; diff --git a/library/Transformers/Prefix.php b/library/Transformers/Prefix.php index a6ecccca3..08667ba90 100644 --- a/library/Transformers/Prefix.php +++ b/library/Transformers/Prefix.php @@ -19,7 +19,7 @@ final class Prefix implements Transformer { private const array RULES_TO_SKIP = [ 'all', - 'allOf', + 'logicAnd', 'key', 'keyExists', 'keyOptional', diff --git a/library/ValidatorBuilder.php b/library/ValidatorBuilder.php index 646e94869..4238a667b 100644 --- a/library/ValidatorBuilder.php +++ b/library/ValidatorBuilder.php @@ -15,8 +15,8 @@ use Respect\Validation\Message\Renderer; use Respect\Validation\Message\StringFormatter; use Respect\Validation\Mixins\Builder; -use Respect\Validation\Validators\AllOf; use Respect\Validation\Validators\Core\Nameable; +use Respect\Validation\Validators\LogicAnd; use Throwable; use function count; @@ -59,7 +59,7 @@ public function evaluate(mixed $input): Result $validator = match (count($this->validators)) { 0 => throw new ComponentException('No validators have been added.'), 1 => current($this->validators), - default => new AllOf(...$this->validators), + default => new LogicAnd(...$this->validators), }; return $validator->evaluate($input); diff --git a/library/Validators/Between.php b/library/Validators/Between.php index 6fc307135..9d1559f05 100644 --- a/library/Validators/Between.php +++ b/library/Validators/Between.php @@ -31,7 +31,7 @@ public function __construct(mixed $minValue, mixed $maxValue) } parent::__construct( - new AllOf( + new LogicAnd( new GreaterThanOrEqual($minValue), new LessThanOrEqual($maxValue), ), diff --git a/library/Validators/BetweenExclusive.php b/library/Validators/BetweenExclusive.php index a064aed5a..febbca435 100644 --- a/library/Validators/BetweenExclusive.php +++ b/library/Validators/BetweenExclusive.php @@ -31,7 +31,7 @@ public function __construct(mixed $minimum, mixed $maximum) } parent::__construct( - new AllOf(new GreaterThan($minimum), new LessThan($maximum)), + new LogicAnd(new GreaterThan($minimum), new LessThan($maximum)), ['minValue' => $minimum, 'maxValue' => $maximum], ); } diff --git a/library/Validators/ContainsAny.php b/library/Validators/ContainsAny.php index df304d0a5..8fc24b46a 100644 --- a/library/Validators/ContainsAny.php +++ b/library/Validators/ContainsAny.php @@ -34,7 +34,7 @@ public function __construct(array $needles, bool $identical = false) $validators = $this->getValidators($needles, $identical); parent::__construct( - count($validators) === 1 ? $validators[0] : new AnyOf(...$validators), + count($validators) === 1 ? $validators[0] : new LogicOr(...$validators), ['needles' => $needles], ); } diff --git a/library/Validators/Core/Reducer.php b/library/Validators/Core/Reducer.php index c646ef719..88951a616 100644 --- a/library/Validators/Core/Reducer.php +++ b/library/Validators/Core/Reducer.php @@ -10,12 +10,12 @@ namespace Respect\Validation\Validators\Core; use Respect\Validation\Validator; -use Respect\Validation\Validators\AllOf; +use Respect\Validation\Validators\LogicAnd; final class Reducer extends Wrapper { public function __construct(Validator $validator1, Validator ...$validators) { - parent::__construct($validators === [] ? $validator1 : new AllOf($validator1, ...$validators)); + parent::__construct($validators === [] ? $validator1 : new LogicAnd($validator1, ...$validators)); } } diff --git a/library/Validators/Domain.php b/library/Validators/Domain.php index cc5efa3ee..95a650d08 100644 --- a/library/Validators/Domain.php +++ b/library/Validators/Domain.php @@ -82,7 +82,7 @@ private function createPartsRule(): Validator new Circuit( new Alnum('-'), new Not(new StartsWith('-')), - new AnyOf( + new LogicOr( new Not(new Contains('--')), new Callback(static function ($str) { return mb_substr_count($str, '--') == 1; diff --git a/library/Validators/AllOf.php b/library/Validators/LogicAnd.php similarity index 97% rename from library/Validators/AllOf.php rename to library/Validators/LogicAnd.php index eb1d7ccfa..0efca058e 100644 --- a/library/Validators/AllOf.php +++ b/library/Validators/LogicAnd.php @@ -31,7 +31,7 @@ '{{subject}} must pass all the rules', self::TEMPLATE_ALL, )] -final class AllOf extends Composite +final class LogicAnd extends Composite { public const string TEMPLATE_ALL = '__all__'; public const string TEMPLATE_SOME = '__some__'; diff --git a/library/Validators/When.php b/library/Validators/LogicCond.php similarity index 80% rename from library/Validators/When.php rename to library/Validators/LogicCond.php index 469ea9bd3..44f5a65ea 100644 --- a/library/Validators/When.php +++ b/library/Validators/LogicCond.php @@ -14,10 +14,10 @@ use Respect\Validation\Validator; #[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)] -final readonly class When implements Validator +final readonly class LogicCond implements Validator { public function __construct( - private Validator $when, + private Validator $if, private Validator $then, private Validator $else = new Templated(AlwaysInvalid::TEMPLATE_SIMPLE, new AlwaysInvalid()), ) { @@ -25,8 +25,8 @@ public function __construct( public function evaluate(mixed $input): Result { - $whenResult = $this->when->evaluate($input); - if ($whenResult->hasPassed) { + $ifResult = $this->if->evaluate($input); + if ($ifResult->hasPassed) { return $this->then->evaluate($input); } diff --git a/library/Validators/NoneOf.php b/library/Validators/LogicNor.php similarity index 97% rename from library/Validators/NoneOf.php rename to library/Validators/LogicNor.php index 386d84377..b5e2f4e78 100644 --- a/library/Validators/NoneOf.php +++ b/library/Validators/LogicNor.php @@ -31,7 +31,7 @@ '{{subject}} must pass all the rules', self::TEMPLATE_ALL, )] -final class NoneOf extends Composite +final class LogicNor extends Composite { public const string TEMPLATE_ALL = '__all__'; public const string TEMPLATE_SOME = '__some__'; diff --git a/library/Validators/AnyOf.php b/library/Validators/LogicOr.php similarity index 96% rename from library/Validators/AnyOf.php rename to library/Validators/LogicOr.php index 1fb15da06..078ac9fe0 100644 --- a/library/Validators/AnyOf.php +++ b/library/Validators/LogicOr.php @@ -23,7 +23,7 @@ '{{subject}} must pass at least one of the rules', '{{subject}} must pass at least one of the rules', )] -final class AnyOf extends Composite +final class LogicOr extends Composite { public function evaluate(mixed $input): Result { diff --git a/library/Validators/OneOf.php b/library/Validators/LogicXor.php similarity index 98% rename from library/Validators/OneOf.php rename to library/Validators/LogicXor.php index 3799a6855..f9bf34cfe 100644 --- a/library/Validators/OneOf.php +++ b/library/Validators/LogicXor.php @@ -32,7 +32,7 @@ '{{subject}} must pass only one of the rules', self::TEMPLATE_MORE_THAN_ONE, )] -final class OneOf extends Composite +final class LogicXor extends Composite { public const string TEMPLATE_NONE = '__none__'; public const string TEMPLATE_MORE_THAN_ONE = '__more_than_one__'; diff --git a/src-dev/Commands/UpdateDocLinksCommand.php b/src-dev/Commands/UpdateDocLinksCommand.php index e56e34f70..1ac24bfa6 100644 --- a/src-dev/Commands/UpdateDocLinksCommand.php +++ b/src-dev/Commands/UpdateDocLinksCommand.php @@ -187,7 +187,7 @@ private function linkRelatedRules(string $docsDirectory, array $validators, Symf preg_match_all('/\[([^\]]+)\]\(([^\)]+)\.md\)/', $content, $matches); foreach ($matches[2] as $relatedRule) { $relatedRule = basename($relatedRule); - if ($relatedRule === '08-comparable-values' || $relatedRule === 'comparing-empty-values') { + if ($relatedRule === 'comparable-values' || $relatedRule === 'comparing-empty-values') { continue; } diff --git a/tests/feature/Issues/Issue1289Test.php b/tests/feature/Issues/Issue1289Test.php index d6f220ad0..f637d317c 100644 --- a/tests/feature/Issues/Issue1289Test.php +++ b/tests/feature/Issues/Issue1289Test.php @@ -12,7 +12,7 @@ use Respect\Validation\Validators\BoolType; use Respect\Validation\Validators\Each; use Respect\Validation\Validators\KeyOptional; -use Respect\Validation\Validators\OneOf; +use Respect\Validation\Validators\LogicXor; use Respect\Validation\Validators\StringType; use Respect\Validation\Validators\StringVal; @@ -22,7 +22,7 @@ ValidatorBuilder::init( new KeyOptional( 'default', - new OneOf( + new LogicXor( new StringType(), new BoolType(), ), diff --git a/tests/feature/Issues/Issue425Test.php b/tests/feature/Issues/Issue425Test.php index 213e5d7a5..d9c56035a 100644 --- a/tests/feature/Issues/Issue425Test.php +++ b/tests/feature/Issues/Issue425Test.php @@ -10,7 +10,7 @@ test('https://github.com/Respect/Validation/issues/425', catchAll( function (): void { $validator = v::init() - ->key('age', v::intType()->notBlank()->noneOf(v::stringType(), v::arrayType())) + ->key('age', v::intType()->notBlank()->logicNor(v::stringType(), v::arrayType())) ->key('reference', v::stringType()->notBlank()->lengthBetween(1, 50)); $validator->assert(['age' => 1]); }, diff --git a/tests/feature/Issues/Issue739Test.php b/tests/feature/Issues/Issue739Test.php index b8be924d3..77e38d612 100644 --- a/tests/feature/Issues/Issue739Test.php +++ b/tests/feature/Issues/Issue739Test.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('https://github.com/Respect/Validation/issues/739', catchAll( - fn() => v::when(v::alwaysInvalid(), v::alwaysValid())->assert('foo'), + fn() => v::logicCond(v::alwaysInvalid(), v::alwaysValid())->assert('foo'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"foo" is invalid') ->and($fullMessage)->toBe('- "foo" is invalid') diff --git a/tests/feature/Validators/AttributesTest.php b/tests/feature/Validators/AttributesTest.php index b5627f8a0..6a4d75422 100644 --- a/tests/feature/Validators/AttributesTest.php +++ b/tests/feature/Validators/AttributesTest.php @@ -73,7 +73,7 @@ - `.phone` must be defined FULL_MESSAGE) ->and($messages)->toBe([ - 'anyOf' => [ + 'logicOr' => [ '__root__' => '`Respect\Validation\Test\Stubs\WithAttributes { +$name="John Doe" +$birthdate="2024-06-23" #$phone=null +$address ... }` must pass at least one of the rules', 'email' => '`.email` must be defined', 'phone' => '`.phone` must be defined', diff --git a/tests/feature/Validators/AllOfTest.php b/tests/feature/Validators/LogicAndTest.php similarity index 87% rename from tests/feature/Validators/AllOfTest.php rename to tests/feature/Validators/LogicAndTest.php index 0eb0e31fc..7e717bb66 100644 --- a/tests/feature/Validators/AllOfTest.php +++ b/tests/feature/Validators/LogicAndTest.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('Default: fail, fail', catchAll( - fn() => v::allOf(v::intType(), v::negative())->assert('string'), + fn() => v::logicAnd(v::intType(), v::negative())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -24,7 +24,7 @@ )); test('Default: fail, pass', catchAll( - fn() => v::allOf(v::intType(), v::stringType())->assert('string'), + fn() => v::logicAnd(v::intType(), v::stringType())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe('- "string" must be an integer') @@ -32,7 +32,7 @@ )); test('Default: fail, fail, pass', catchAll( - fn() => v::allOf(v::intType(), v::positive(), v::stringType())->assert('string'), + fn() => v::logicAnd(v::intType(), v::positive(), v::stringType())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -48,7 +48,7 @@ )); test('Inverted: pass, pass', catchAll( - fn() => v::not(v::allOf(v::intType(), v::negative()))->assert(-1), + fn() => v::not(v::logicAnd(v::intType(), v::negative()))->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -64,7 +64,7 @@ )); test('Inverted: pass, fail, fail', catchAll( - fn() => v::allOf(v::intType(), v::alpha(), v::stringType())->assert(2), + fn() => v::logicAnd(v::intType(), v::alpha(), v::stringType())->assert(2), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('2 must contain only letters (a-z)') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -80,7 +80,7 @@ )); test('Wrapping "not"', catchAll( - fn() => v::allOf(v::not(v::intType()), v::greaterThan(2))->assert(4), + fn() => v::logicAnd(v::not(v::intType()), v::greaterThan(2))->assert(4), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('4 must not be an integer') ->and($fullMessage)->toBe('- 4 must not be an integer') @@ -88,7 +88,7 @@ )); test('With a single template', catchAll( - fn() => v::allOf(v::stringType(), v::arrayType())->assert(5, 'This is a single template'), + fn() => v::logicAnd(v::stringType(), v::arrayType())->assert(5, 'This is a single template'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('This is a single template') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -104,7 +104,7 @@ )); test('With multiple templates', catchAll( - fn() => v::allOf(v::stringType(), v::uppercase())->assert(5, [ + fn() => v::logicAnd(v::stringType(), v::uppercase())->assert(5, [ '__root__' => 'Two things are wrong', 'stringType' => 'Template for "stringType"', 'uppercase' => 'Template for "uppercase"', diff --git a/tests/feature/Validators/WhenTest.php b/tests/feature/Validators/LogicCondTest.php similarity index 80% rename from tests/feature/Validators/WhenTest.php rename to tests/feature/Validators/LogicCondTest.php index dd7a0dc94..95ba8b613 100644 --- a/tests/feature/Validators/WhenTest.php +++ b/tests/feature/Validators/LogicCondTest.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('When valid use "then"', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert(-1), + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must be a positive number') ->and($fullMessage)->toBe('- -1 must be a positive number') @@ -16,7 +16,7 @@ )); test('When invalid use "else"', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert(''), + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert(''), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"" must not be blank') ->and($fullMessage)->toBe('- "" must not be blank') @@ -24,7 +24,7 @@ )); test('When valid use "then" using single template', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert(-1, 'That did not go as planned'), + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert(-1, 'That did not go as planned'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('That did not go as planned') ->and($fullMessage)->toBe('- That did not go as planned') @@ -32,7 +32,7 @@ )); test('When invalid use "else" using single template', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert('', 'That could have been better'), + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert('', 'That could have been better'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('That could have been better') ->and($fullMessage)->toBe('- That could have been better') @@ -40,7 +40,7 @@ )); test('When valid use "then" using array template', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert(-1, [ + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert(-1, [ 'notBlank' => '--Never shown--', 'positive' => 'Not positive', ]), @@ -51,7 +51,7 @@ )); test('When invalid use "else" using array template', catchAll( - fn() => v::when(v::intVal(), v::positive(), v::notBlank())->assert('', [ + fn() => v::logicCond(v::intVal(), v::positive(), v::notBlank())->assert('', [ 'notBlank' => 'Not empty', 'positive' => '--Never shown--', ]), diff --git a/tests/feature/Validators/NoneOfTest.php b/tests/feature/Validators/LogicNorTest.php similarity index 88% rename from tests/feature/Validators/NoneOfTest.php rename to tests/feature/Validators/LogicNorTest.php index 9d7e1bd63..99e57e616 100644 --- a/tests/feature/Validators/NoneOfTest.php +++ b/tests/feature/Validators/LogicNorTest.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('Default: fail, fail', catchAll( - fn() => v::noneOf(v::intType(), v::negative())->assert(-1), + fn() => v::logicNor(v::intType(), v::negative())->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -24,7 +24,7 @@ )); test('Default: pass, fail', catchAll( - fn() => v::noneOf(v::intType(), v::stringType())->assert('string'), + fn() => v::logicNor(v::intType(), v::stringType())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must not be a string') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -34,7 +34,7 @@ )); test('Default: pass, fail, fail', catchAll( - fn() => v::noneOf(v::intType(), v::alpha(), v::stringType())->assert('string'), + fn() => v::logicNor(v::intType(), v::alpha(), v::stringType())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must not contain letters (a-z)') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -50,7 +50,7 @@ )); test('Inverted: fail, fail', catchAll( - fn() => v::not(v::noneOf(v::intType(), v::negative()))->assert('string'), + fn() => v::not(v::logicNor(v::intType(), v::negative()))->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' diff --git a/tests/feature/Validators/AnyOfTest.php b/tests/feature/Validators/LogicOrTest.php similarity index 89% rename from tests/feature/Validators/AnyOfTest.php rename to tests/feature/Validators/LogicOrTest.php index fd3cbffe1..aafb5203b 100644 --- a/tests/feature/Validators/AnyOfTest.php +++ b/tests/feature/Validators/LogicOrTest.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('Default: fail, fail', catchAll( - fn() => v::anyOf(v::intType(), v::negative())->assert('string'), + fn() => v::logicOr(v::intType(), v::negative())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -24,7 +24,7 @@ )); test('Inverted: pass, pass', catchAll( - fn() => v::not(v::anyOf(v::intType(), v::negative()))->assert(-1), + fn() => v::not(v::logicOr(v::intType(), v::negative()))->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -40,7 +40,7 @@ )); test('Inverted: pass, pass, fail', catchAll( - fn() => v::not(v::anyOf(v::intType(), v::negative(), v::stringType()))->assert(-1), + fn() => v::not(v::logicOr(v::intType(), v::negative(), v::stringType()))->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' diff --git a/tests/feature/Validators/OneOfTest.php b/tests/feature/Validators/LogicXorTest.php similarity index 88% rename from tests/feature/Validators/OneOfTest.php rename to tests/feature/Validators/LogicXorTest.php index 952f07e28..b5b631cb5 100644 --- a/tests/feature/Validators/OneOfTest.php +++ b/tests/feature/Validators/LogicXorTest.php @@ -8,7 +8,7 @@ declare(strict_types=1); test('Default: fail, fail', catchAll( - fn() => v::oneOf(v::intType(), v::negative())->assert('string'), + fn() => v::logicXor(v::intType(), v::negative())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -24,7 +24,7 @@ )); test('Default: fail, pass, pass', catchAll( - fn() => v::oneOf(v::intType(), v::stringType(), v::alpha())->assert('string'), + fn() => v::logicXor(v::intType(), v::stringType(), v::alpha())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -42,7 +42,7 @@ )); test('Default: pass, fail, pass', catchAll( - fn() => v::oneOf(v::stringType(), v::intType(), v::alpha())->assert('string'), + fn() => v::logicXor(v::stringType(), v::intType(), v::alpha())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -60,7 +60,7 @@ )); test('Default: pass, pass, fail', catchAll( - fn() => v::oneOf(v::stringType(), v::alpha(), v::intType())->assert('string'), + fn() => v::logicXor(v::stringType(), v::alpha(), v::intType())->assert('string'), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('"string" must be an integer') ->and($fullMessage)->toBe(<<<'FULL_MESSAGE' @@ -78,7 +78,7 @@ )); test('Inverted: fail, pass', catchAll( - fn() => v::not(v::oneOf(v::intType(), v::positive()))->assert(-1), + fn() => v::not(v::logicXor(v::intType(), v::positive()))->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be an integer') ->and($fullMessage)->toBe('- -1 must not be an integer') @@ -86,7 +86,7 @@ )); test('Inverted: fail, fail, pass', catchAll( - fn() => v::not(v::oneOf(v::stringType(), v::alpha(), v::negative()))->assert(-1), + fn() => v::not(v::logicXor(v::stringType(), v::alpha(), v::negative()))->assert(-1), fn(string $message, string $fullMessage, array $messages) => expect() ->and($message)->toBe('-1 must not be a negative number') ->and($fullMessage)->toBe('- -1 must not be a negative number') diff --git a/tests/library/Stubs/WithAttributes.php b/tests/library/Stubs/WithAttributes.php index adb20f127..12be8c46d 100644 --- a/tests/library/Stubs/WithAttributes.php +++ b/tests/library/Stubs/WithAttributes.php @@ -11,7 +11,7 @@ use Respect\Validation\Validators as Rule; -#[Rule\AnyOf( +#[Rule\LogicOr( new Rule\Property('email', new Rule\Not(new Rule\Undef())), new Rule\Property('phone', new Rule\Not(new Rule\Undef())), )] diff --git a/tests/unit/Validators/AllOfTest.php b/tests/unit/Validators/AllOfTest.php deleted file mode 100644 index 13b94df40..000000000 --- a/tests/unit/Validators/AllOfTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Validators; - -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; -use Respect\Validation\Test\RuleTestCase; -use Respect\Validation\Test\Validators\Stub; - -#[Group('validator')] -#[CoversClass(AllOf::class)] -final class AllOfTest extends RuleTestCase -{ - /** @return iterable */ - public static function providerForValidInput(): iterable - { - yield 'pass, pass' => [new AllOf(Stub::pass(1), Stub::pass(1)), []]; - yield 'pass, pass, pass' => [new AllOf(Stub::pass(1), Stub::pass(1), Stub::pass(1)), []]; - } - - /** @return iterable */ - public static function providerForInvalidInput(): iterable - { - yield 'pass, fail' => [new AllOf(Stub::pass(1), Stub::fail(1)), []]; - yield 'fail, pass' => [new AllOf(Stub::fail(1), Stub::pass(1)), []]; - yield 'pass, pass, fail' => [new AllOf(Stub::pass(1), Stub::pass(1), Stub::fail(1)), []]; - yield 'pass, fail, pass' => [new AllOf(Stub::pass(1), Stub::fail(1), Stub::pass(1)), []]; - yield 'fail, pass, pass' => [new AllOf(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; - } -} diff --git a/tests/unit/Validators/AnyOfTest.php b/tests/unit/Validators/AnyOfTest.php deleted file mode 100644 index 24fa73f83..000000000 --- a/tests/unit/Validators/AnyOfTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Validators; - -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; -use Respect\Validation\Test\RuleTestCase; -use Respect\Validation\Test\Validators\Stub; - -#[Group('validator')] -#[CoversClass(AnyOf::class)] -final class AnyOfTest extends RuleTestCase -{ - /** @return iterable */ - public static function providerForValidInput(): iterable - { - yield 'fail, pass' => [new AnyOf(Stub::fail(1), Stub::pass(1)), []]; - yield 'pass, fail' => [new AnyOf(Stub::pass(1), Stub::fail(1)), []]; - yield 'fail, fail, pass' => [new AnyOf(Stub::fail(1), Stub::fail(1), Stub::pass(1)), []]; - yield 'fail, pass, fail' => [new AnyOf(Stub::fail(1), Stub::pass(1), Stub::fail(1)), []]; - yield 'pass, fail, fail' => [new AnyOf(Stub::pass(1), Stub::fail(1), Stub::fail(1)), []]; - } - - /** @return iterable */ - public static function providerForInvalidInput(): iterable - { - yield 'fail, fail' => [new AnyOf(Stub::fail(1), Stub::fail(1)), []]; - yield 'fail, fail, fail' => [new AnyOf(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; - } -} diff --git a/tests/unit/Validators/Core/ReducerTest.php b/tests/unit/Validators/Core/ReducerTest.php index 3c4226ef7..e5a083c84 100644 --- a/tests/unit/Validators/Core/ReducerTest.php +++ b/tests/unit/Validators/Core/ReducerTest.php @@ -13,7 +13,7 @@ use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\TestCase; use Respect\Validation\Test\Validators\Stub; -use Respect\Validation\Validators\AllOf; +use Respect\Validation\Validators\LogicAnd; #[CoversClass(Reducer::class)] final class ReducerTest extends TestCase @@ -39,6 +39,6 @@ public function shouldWrapWhenThereAreMultipleValidators(): void $reducer = new Reducer($validator1, $validator2, $validator3); $result = $reducer->evaluate(null); - self::assertEquals(new AllOf($validator1, $validator2, $validator3), $result->validator); + self::assertEquals(new LogicAnd($validator1, $validator2, $validator3), $result->validator); } } diff --git a/tests/unit/Validators/LogicAndTest.php b/tests/unit/Validators/LogicAndTest.php new file mode 100644 index 000000000..53c5c36cc --- /dev/null +++ b/tests/unit/Validators/LogicAndTest.php @@ -0,0 +1,37 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Validators; + +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Group; +use Respect\Validation\Test\RuleTestCase; +use Respect\Validation\Test\Validators\Stub; + +#[Group('validator')] +#[CoversClass(LogicAnd::class)] +final class LogicAndTest extends RuleTestCase +{ + /** @return iterable */ + public static function providerForValidInput(): iterable + { + yield 'pass, pass' => [new LogicAnd(Stub::pass(1), Stub::pass(1)), []]; + yield 'pass, pass, pass' => [new LogicAnd(Stub::pass(1), Stub::pass(1), Stub::pass(1)), []]; + } + + /** @return iterable */ + public static function providerForInvalidInput(): iterable + { + yield 'pass, fail' => [new LogicAnd(Stub::pass(1), Stub::fail(1)), []]; + yield 'fail, pass' => [new LogicAnd(Stub::fail(1), Stub::pass(1)), []]; + yield 'pass, pass, fail' => [new LogicAnd(Stub::pass(1), Stub::pass(1), Stub::fail(1)), []]; + yield 'pass, fail, pass' => [new LogicAnd(Stub::pass(1), Stub::fail(1), Stub::pass(1)), []]; + yield 'fail, pass, pass' => [new LogicAnd(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; + } +} diff --git a/tests/unit/Validators/WhenTest.php b/tests/unit/Validators/LogicCondTest.php similarity index 59% rename from tests/unit/Validators/WhenTest.php rename to tests/unit/Validators/LogicCondTest.php index 73673fd5c..9df38047a 100644 --- a/tests/unit/Validators/WhenTest.php +++ b/tests/unit/Validators/LogicCondTest.php @@ -17,26 +17,26 @@ use function rand; #[Group('validator')] -#[CoversClass(When::class)] -final class WhenTest extends RuleTestCase +#[CoversClass(LogicCond::class)] +final class LogicCondTest extends RuleTestCase { - /** @return array */ + /** @return array */ public static function providerForValidInput(): array { return [ - 'when fail, then pass' => [new When(Stub::pass(1), Stub::pass(1)), rand()], - 'when pass, then pass, else daze' => [new When(Stub::pass(1), Stub::pass(1), Stub::daze()), rand()], - 'when fail, then daze, else pass' => [new When(Stub::fail(1), Stub::daze(), Stub::pass(1)), rand()], + 'fail, then pass' => [new LogicCond(Stub::pass(1), Stub::pass(1)), rand()], + 'pass, then pass, else daze' => [new LogicCond(Stub::pass(1), Stub::pass(1), Stub::daze()), rand()], + 'fail, then daze, else pass' => [new LogicCond(Stub::fail(1), Stub::daze(), Stub::pass(1)), rand()], ]; } - /** @return array */ + /** @return array */ public static function providerForInvalidInput(): array { return [ - 'when pass, then fail' => [new When(Stub::pass(1), Stub::fail(1)), rand()], - 'when pass, then fail, else daze' => [new When(Stub::pass(1), Stub::fail(1), Stub::daze()), rand()], - 'when fail, then daze, else fail' => [new When(Stub::fail(1), Stub::daze(), Stub::fail(1)), rand()], + 'pass, then fail' => [new LogicCond(Stub::pass(1), Stub::fail(1)), rand()], + 'pass, then fail, else daze' => [new LogicCond(Stub::pass(1), Stub::fail(1), Stub::daze()), rand()], + 'fail, then daze, else fail' => [new LogicCond(Stub::fail(1), Stub::daze(), Stub::fail(1)), rand()], ]; } } diff --git a/tests/unit/Validators/LogicNorTest.php b/tests/unit/Validators/LogicNorTest.php new file mode 100644 index 000000000..dacea4c5c --- /dev/null +++ b/tests/unit/Validators/LogicNorTest.php @@ -0,0 +1,37 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Validators; + +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Group; +use Respect\Validation\Test\RuleTestCase; +use Respect\Validation\Test\Validators\Stub; + +#[Group('validator')] +#[CoversClass(LogicNor::class)] +final class LogicNorTest extends RuleTestCase +{ + /** @return iterable */ + public static function providerForValidInput(): iterable + { + yield 'fail, fail' => [new LogicNor(Stub::fail(1), Stub::fail(1)), []]; + yield 'fail, fail, fail' => [new LogicNor(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; + } + + /** @return iterable */ + public static function providerForInvalidInput(): iterable + { + yield 'pass, fail' => [new LogicNor(Stub::pass(1), Stub::fail(1)), []]; + yield 'fail, pass' => [new LogicNor(Stub::fail(1), Stub::pass(1)), []]; + yield 'pass, pass, fail' => [new LogicNor(Stub::pass(1), Stub::pass(1), Stub::fail(1)), []]; + yield 'pass, fail, pass' => [new LogicNor(Stub::pass(1), Stub::fail(1), Stub::pass(1)), []]; + yield 'fail, pass, pass' => [new LogicNor(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; + } +} diff --git a/tests/unit/Validators/LogicOrTest.php b/tests/unit/Validators/LogicOrTest.php new file mode 100644 index 000000000..cbc987952 --- /dev/null +++ b/tests/unit/Validators/LogicOrTest.php @@ -0,0 +1,37 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Validators; + +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Group; +use Respect\Validation\Test\RuleTestCase; +use Respect\Validation\Test\Validators\Stub; + +#[Group('validator')] +#[CoversClass(LogicOr::class)] +final class LogicOrTest extends RuleTestCase +{ + /** @return iterable */ + public static function providerForValidInput(): iterable + { + yield 'fail, pass' => [new LogicOr(Stub::fail(1), Stub::pass(1)), []]; + yield 'pass, fail' => [new LogicOr(Stub::pass(1), Stub::fail(1)), []]; + yield 'fail, fail, pass' => [new LogicOr(Stub::fail(1), Stub::fail(1), Stub::pass(1)), []]; + yield 'fail, pass, fail' => [new LogicOr(Stub::fail(1), Stub::pass(1), Stub::fail(1)), []]; + yield 'pass, fail, fail' => [new LogicOr(Stub::pass(1), Stub::fail(1), Stub::fail(1)), []]; + } + + /** @return iterable */ + public static function providerForInvalidInput(): iterable + { + yield 'fail, fail' => [new LogicOr(Stub::fail(1), Stub::fail(1)), []]; + yield 'fail, fail, fail' => [new LogicOr(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; + } +} diff --git a/tests/unit/Validators/LogicXorTest.php b/tests/unit/Validators/LogicXorTest.php new file mode 100644 index 000000000..d0dee934f --- /dev/null +++ b/tests/unit/Validators/LogicXorTest.php @@ -0,0 +1,38 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Validators; + +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\Group; +use Respect\Validation\Test\RuleTestCase; +use Respect\Validation\Test\Validators\Stub; + +#[Group('validator')] +#[CoversClass(LogicXor::class)] +final class LogicXorTest extends RuleTestCase +{ + /** @return iterable */ + public static function providerForValidInput(): iterable + { + yield 'fail, pass' => [new LogicXor(Stub::fail(1), Stub::pass(1)), []]; + yield 'pass, fail' => [new LogicXor(Stub::pass(1), Stub::fail(1)), []]; + yield 'pass, fail, fail' => [new LogicXor(Stub::pass(1), Stub::fail(1), Stub::fail(1)), []]; + yield 'fail, pass, fail' => [new LogicXor(Stub::fail(1), Stub::pass(1), Stub::fail(1)), []]; + yield 'fail, fail, pass' => [new LogicXor(Stub::fail(1), Stub::fail(1), Stub::pass(1)), []]; + } + + /** @return iterable */ + public static function providerForInvalidInput(): iterable + { + yield 'fail, fail' => [new LogicXor(Stub::fail(1), Stub::fail(1)), []]; + yield 'fail, fail, fail' => [new LogicXor(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; + yield 'fail, pass, pass' => [new LogicXor(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; + } +} diff --git a/tests/unit/Validators/NoneOfTest.php b/tests/unit/Validators/NoneOfTest.php deleted file mode 100644 index df961f59a..000000000 --- a/tests/unit/Validators/NoneOfTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Validators; - -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; -use Respect\Validation\Test\RuleTestCase; -use Respect\Validation\Test\Validators\Stub; - -#[Group('validator')] -#[CoversClass(NoneOf::class)] -final class NoneOfTest extends RuleTestCase -{ - /** @return iterable */ - public static function providerForValidInput(): iterable - { - yield 'fail, fail' => [new NoneOf(Stub::fail(1), Stub::fail(1)), []]; - yield 'fail, fail, fail' => [new NoneOf(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; - } - - /** @return iterable */ - public static function providerForInvalidInput(): iterable - { - yield 'pass, fail' => [new NoneOf(Stub::pass(1), Stub::fail(1)), []]; - yield 'fail, pass' => [new NoneOf(Stub::fail(1), Stub::pass(1)), []]; - yield 'pass, pass, fail' => [new NoneOf(Stub::pass(1), Stub::pass(1), Stub::fail(1)), []]; - yield 'pass, fail, pass' => [new NoneOf(Stub::pass(1), Stub::fail(1), Stub::pass(1)), []]; - yield 'fail, pass, pass' => [new NoneOf(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; - } -} diff --git a/tests/unit/Validators/OneOfTest.php b/tests/unit/Validators/OneOfTest.php deleted file mode 100644 index ee3f86b6a..000000000 --- a/tests/unit/Validators/OneOfTest.php +++ /dev/null @@ -1,38 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Validators; - -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\Group; -use Respect\Validation\Test\RuleTestCase; -use Respect\Validation\Test\Validators\Stub; - -#[Group('validator')] -#[CoversClass(OneOf::class)] -final class OneOfTest extends RuleTestCase -{ - /** @return iterable */ - public static function providerForValidInput(): iterable - { - yield 'fail, pass' => [new OneOf(Stub::fail(1), Stub::pass(1)), []]; - yield 'pass, fail' => [new OneOf(Stub::pass(1), Stub::fail(1)), []]; - yield 'pass, fail, fail' => [new OneOf(Stub::pass(1), Stub::fail(1), Stub::fail(1)), []]; - yield 'fail, pass, fail' => [new OneOf(Stub::fail(1), Stub::pass(1), Stub::fail(1)), []]; - yield 'fail, fail, pass' => [new OneOf(Stub::fail(1), Stub::fail(1), Stub::pass(1)), []]; - } - - /** @return iterable */ - public static function providerForInvalidInput(): iterable - { - yield 'fail, fail' => [new OneOf(Stub::fail(1), Stub::fail(1)), []]; - yield 'fail, fail, fail' => [new OneOf(Stub::fail(1), Stub::fail(1), Stub::fail(1)), []]; - yield 'fail, pass, pass' => [new OneOf(Stub::fail(1), Stub::pass(1), Stub::pass(1)), []]; - } -}