Passed
Push — master ( e73618...52f31e )
by Alexander
17:03 queued 10:18
created

CompareToTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 44
c 1
b 0
f 0
dl 0
loc 61
rs 10
wmc 4

2 Methods

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