Passed
Push — master ( 05c834...72ff63 )
by Kirill
05:19 queued 11s
created

ArrayTest::testCount()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 9
rs 10
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * Spiral Framework.
5
 *
6
 * @license   MIT
7
 * @author    Anton Titov (Wolfy-J)
8
 */
9
10
declare(strict_types=1);
11
12
namespace Spiral\Tests\Validation\Checkers;
13
14
use Spiral\Tests\Validation\BaseTest;
15
use Spiral\Validation\Checker\ArrayChecker;
16
17
class ArrayTest extends BaseTest
18
{
19
    public function testOf(): void
20
    {
21
        /** @var ArrayChecker $checker */
22
        $checker = $this->container->get(ArrayChecker::class);
23
24
        $this->assertTrue($checker->of([1], 'is_int'));
25
        $this->assertTrue($checker->of([1], 'integer'));
26
        $this->assertTrue($checker->of(['1'], 'is_string'));
27
28
        $this->assertFalse($checker->of(1, 'is_int'));
29
        $this->assertFalse($checker->of([1], 'is_string'));
30
    }
31
32
    public function testCount(): void
33
    {
34
        /** @var ArrayChecker $checker */
35
        $checker = $this->container->get(ArrayChecker::class);
36
37
        $this->assertFalse($checker->count('foobar', 1));
38
        $this->assertTrue($checker->count($this->createCountable(2), 2));
39
        $this->assertTrue($checker->count([1, 2], 2));
40
        $this->assertFalse($checker->count([1, 2], 3));
41
    }
42
43
    public function testLonger(): void
44
    {
45
        /** @var ArrayChecker $checker */
46
        $checker = $this->container->get(ArrayChecker::class);
47
48
        $this->assertFalse($checker->longer('foobar', 1));
49
        $this->assertTrue($checker->longer($this->createCountable(2), 1));
50
        $this->assertTrue($checker->longer([1, 2], 1));
51
        $this->assertTrue($checker->longer([1, 2], 2));
52
        $this->assertFalse($checker->longer([1, 2], 3));
53
    }
54
55
    public function testShorter(): void
56
    {
57
        /** @var ArrayChecker $checker */
58
        $checker = $this->container->get(ArrayChecker::class);
59
60
        $this->assertFalse($checker->shorter('foobar', 1));
61
        $this->assertTrue($checker->shorter($this->createCountable(2), 3));
62
        $this->assertTrue($checker->shorter([1, 2], 3));
63
        $this->assertTrue($checker->shorter([1, 2], 2));
64
        $this->assertFalse($checker->shorter([1, 2], 1));
65
    }
66
67
    public function testRange(): void
68
    {
69
        /** @var ArrayChecker $checker */
70
        $checker = $this->container->get(ArrayChecker::class);
71
72
        $this->assertFalse($checker->range('foobar', 1, 2));
73
        $this->assertTrue($checker->range($this->createCountable(2), 0, 2));
74
        $this->assertTrue($checker->range([1, 2], 1, 2));
75
        $this->assertTrue($checker->range([1, 2], 2, 3));
76
        $this->assertFalse($checker->range([1, 2], 0, 0));
77
        $this->assertFalse($checker->range([1, 2], 3, 4));
78
    }
79
80
    private function createCountable(int $count): \Countable
81
    {
82
        return new class($count) implements \Countable {
83
            private $count;
84
85
            public function __construct(int $count)
86
            {
87
                $this->count = $count;
88
            }
89
90
            public function count(): int
91
            {
92
                return $this->count;
93
            }
94
        };
95
    }
96
}
97