Passed
Pull Request — master (#72)
by Wilmer
11:03
created

CompareToTest::getOperationTestData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 41
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 33
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 41
cc 1
rs 9.392
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Validator\Tests\Rule;
6
7
use PHPUnit\Framework\TestCase;
8
use Yiisoft\Validator\Rule\CompareTo;
9
10
/**
11
 * @group validators
12
 */
13
class CompareToTest extends TestCase
14
{
15
    public function testValidate(): void
16
    {
17
        $value = 18449;
18
        // default config
19
        $validator = new CompareTo($value);
20
21
        $this->assertTrue($validator->validate($value)->isValid());
22
        $this->assertTrue($validator->validate((string)$value)->isValid());
23
        $this->assertFalse($validator->validate($value + 1)->isValid());
24
        foreach ($this->getOperationTestData($value) as $operator => $tests) {
25
            $validator = (new CompareTo($value))
26
                ->operator($operator);
27
28
            foreach ($tests as $test) {
29
                $this->assertEquals($test[1], $validator->validate($test[0])->isValid(), "Testing $operator");
30
            }
31
        }
32
    }
33
34
    protected function getOperationTestData($value): array
35
    {
36
        return [
37
            '===' => [
38
                [$value, true],
39
                [(string)$value, true],
40
                [(float)$value, true],
41
                [$value + 1, false],
42
            ],
43
            '!=' => [
44
                [$value, false],
45
                [(string)$value, false],
46
                [(float)$value, false],
47
                [$value + 0.00001, true],
48
                [false, true],
49
            ],
50
            '!==' => [
51
                [$value, false],
52
                [(string)$value, false],
53
                [(float)$value, false],
54
                [false, true],
55
            ],
56
            '>' => [
57
                [$value, false],
58
                [$value + 1, true],
59
                [$value - 1, false],
60
            ],
61
            '>=' => [
62
                [$value, true],
63
                [$value + 1, true],
64
                [$value - 1, false],
65
            ],
66
            '<' => [
67
                [$value, false],
68
                [$value + 1, false],
69
                [$value - 1, true],
70
            ],
71
            '<=' => [
72
                [$value, true],
73
                [$value + 1, false],
74
                [$value - 1, true],
75
            ],
76
        ];
77
    }
78
}
79