Passed
Pull Request — master (#320)
by Dmitriy
02:36
created

BooleanHandler::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 0
c 1
b 0
f 0
dl 0
loc 2
ccs 1
cts 1
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Validator\Rule;
6
7
use Yiisoft\Validator\Exception\UnexpectedRuleException;
8
use Yiisoft\Validator\Result;
9
use Yiisoft\Validator\RuleHandlerInterface;
10
use Yiisoft\Validator\ValidationContext;
11
12
/**
13
 * Checks if the value is a boolean value or a value corresponding to it.
14
 */
15
final class BooleanHandler implements RuleHandlerInterface
16
{
17 22
    public function validate(mixed $value, object $rule, ValidationContext $context): Result
18
    {
19 22
        if (!$rule instanceof Boolean) {
20 1
            throw new UnexpectedRuleException(Boolean::class, $rule);
21
        }
22
23 21
        if ($rule->isStrict()) {
24 8
            $valid = $value === $rule->getTrueValue() || $value === $rule->getFalseValue();
25
        } else {
26 13
            $valid = $value == $rule->getTrueValue() || $value == $rule->getFalseValue();
27
        }
28
29 21
        $result = new Result();
30
31 21
        if ($valid) {
32 13
            return $result;
33
        }
34
35 8
        $result->addError(
36 8
            message: $rule->getMessage(),
37
            parameters: [
38 8
                'true' => $rule->getTrueValue() === true ? 'true' : $rule->getTrueValue(),
39 8
                'false' => $rule->getFalseValue() === false ? 'false' : $rule->getFalseValue(),
40
                'value' => $value,
41
            ]
42
        );
43
44 8
        return $result;
45
    }
46
}
47