Completed
Pull Request — master (#285)
by
unknown
01:48
created

CombinedAdapterTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 3
dl 0
loc 76
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 8 1
A testNbResults() 0 11 2
A testSlices() 0 49 1
1
<?php
2
3
namespace Pagerfanta\Tests\Adapter;
4
5
use Pagerfanta\Adapter\ArrayAdapter;
6
use Pagerfanta\Adapter\CombinedAdapter;
7
use PHPUnit\Framework\TestCase;
8
9
class CombinedAdapterTest extends TestCase
10
{
11
    /** @var ArrayAdapter[] */
12
    private static $adapters = [];
13
14
    protected function setUp()
15
    {
16
        self::$adapters = [
17
            new ArrayAdapter(range(1, 88)),
18
            new ArrayAdapter(range(10001, 10105)),
19
            new ArrayAdapter(range(1000001, 1000105)),
20
        ];
21
    }
22
23
    public function testNbResults()
24
    {
25
        $multiAdapter = new CombinedAdapter(self::$adapters);
26
27
        $total = 0;
28
        foreach (self::$adapters as $adapter) {
29
            $total += $adapter->getNbResults();
30
        }
31
32
        $this->assertSame($total, $multiAdapter->getNbResults());
33
    }
34
35
    public function testSlices()
36
    {
37
        $multiAdapter = new CombinedAdapter(self::$adapters);
38
39
        $this->assertSame(
40
            self::$adapters,
41
            $multiAdapter->getAdapters()
42
        );
43
44
        $this->assertSame(
45
            self::$adapters[0]->getSlice(0, 50),
46
            iterator_to_array($multiAdapter->getSlice(0, 50))
47
        );
48
49
        $this->assertSame(
50
            self::$adapters[0]->getSlice(0, 88),
51
            iterator_to_array($multiAdapter->getSlice(0, 88))
52
        );
53
54
        $this->assertSame(
55
            array_merge(
56
                self::$adapters[0]->getSlice(50, 38),
57
                self::$adapters[1]->getSlice(0, 12)
58
            ),
59
            iterator_to_array($multiAdapter->getSlice(50, 50))
60
        );
61
62
        $this->assertSame(
63
            self::$adapters[1]->getSlice(12, 50),
64
            iterator_to_array($multiAdapter->getSlice(100, 50))
65
        );
66
67
        $this->assertSame(
68
            array_merge(
69
                self::$adapters[1]->getSlice(62, 43),
70
                self::$adapters[2]->getSlice(0, 7)
71
            ),
72
            iterator_to_array($multiAdapter->getSlice(150, 50))
73
        );
74
75
        $this->assertSame(
76
            array_merge(
77
                self::$adapters[0]->getArray(),
78
                self::$adapters[1]->getArray(),
79
                self::$adapters[2]->getArray()
80
            ),
81
            iterator_to_array($multiAdapter->getSlice(0, 300))
82
        );
83
    }
84
}
85