Passed
Push — master ( e6a12d...210e25 )
by Petr
08:06
created

LengthRulesTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 20
c 1
b 0
f 0
dl 0
loc 62
rs 10
wmc 7
1
<?php
2
3
use kalanis\kw_rules\Rules;
4
use kalanis\kw_rules\Exceptions\RuleException;
5
6
7
class LengthRulesTest extends CommonTestClass
8
{
9
    /**
10
     * @param string $value
11
     * @param int $length
12
     * @param bool $passMin
13
     * @param bool $passEq
14
     * @param bool $passMax
15
     * @throws RuleException
16
     * @dataProvider compareLenProvider
17
     */
18
    public function testLengthMin(string $value, int $length, bool $passMin, bool $passEq, bool $passMax): void
19
    {
20
        $data = new Rules\LengthMin();
21
        $this->assertInstanceOf(Rules\ARule::class, $data);
22
        $data->setAgainstValue($length);
23
        if (!$passMin) $this->expectException(RuleException::class);
24
        $data->validate(MockEntry::init('foo', $value));
25
    }
26
27
    /**
28
     * @param string $value
29
     * @param int $length
30
     * @param bool $passMin
31
     * @param bool $passEq
32
     * @param bool $passMax
33
     * @throws RuleException
34
     * @dataProvider compareLenProvider
35
     */
36
    public function testLengthEquals(string $value, int $length, bool $passMin, bool $passEq, bool $passMax): void
37
    {
38
        $data = new Rules\LengthEquals();
39
        $this->assertInstanceOf(Rules\ARule::class, $data);
40
        $data->setAgainstValue($length);
41
        if (!$passEq) $this->expectException(RuleException::class);
42
        $data->validate(MockEntry::init('foo', $value));
43
    }
44
45
    /**
46
     * @param string $value
47
     * @param int $length
48
     * @param bool $passMin
49
     * @param bool $passEq
50
     * @param bool $passMax
51
     * @throws RuleException
52
     * @dataProvider compareLenProvider
53
     */
54
    public function testLengthMax(string $value, int $length, bool $passMin, bool $passEq, bool $passMax): void
55
    {
56
        $data = new Rules\LengthMax();
57
        $this->assertInstanceOf(Rules\ARule::class, $data);
58
        $data->setAgainstValue($length);
59
        if (!$passMax) $this->expectException(RuleException::class);
60
        $data->validate(MockEntry::init('foo', $value));
61
    }
62
63
    public function compareLenProvider(): array
64
    {
65
        return [
66
            ['yxcvbnm',   8, false, false, true ],
67
            ['asdfghjk',  8, true,  true,  true ],
68
            ['qwertutop', 8, true,  false, false],
69
        ];
70
    }
71
}
72