Completed
Push — master ( b9fce4...98eb76 )
by Max
01:21
created

IteratorsTest::testDehydrateIterator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.7666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/*
3
 * @copyright (c) 2020 Mendel <[email protected]>
4
 * @license see license.txt
5
 */
6
namespace drycart\data\tests;
7
use drycart\data\SortIterator;
8
use drycart\data\FilterIterator;
9
use drycart\data\HydrateIterator;
10
use drycart\data\DehydrateIterator;
11
12
/**
13
 * @author mendel
14
 */
15
class IteratorsTest extends \PHPUnit\Framework\TestCase
16
{
17
    public function testSortIterator()
18
    {
19
        $data = new \ArrayObject([
20
            ['name'=>'Max','age'=>39,'score'=>12],
21
            ['name'=>'Jonn','age'=>18,'score'=>8],
22
            ['name'=>'Anton','age'=>18,'score'=>36],
23
        ]);
24
        $iterator = new SortIterator($data, ['score','age']);
25
        $arr = iterator_to_array($iterator);
26
        
27
        $this->assertEquals($arr[0]['name'], 'Anton');
28
        $this->assertEquals($arr[1]['name'], 'Max');
29
        $this->assertEquals($arr[2]['name'], 'Jonn');
30
        
31
        $iterator = new SortIterator($data, ['age','!score']);
32
        $arr = iterator_to_array($iterator);
33
        
34
        $this->assertEquals($arr[0]['name'], 'Max');
35
        $this->assertEquals($arr[1]['name'], 'Jonn');
36
        $this->assertEquals($arr[2]['name'], 'Anton');
37
    }
38
    
39
    public function testFilterIterator()
40
    {
41
        $data = new \ArrayObject([
42
            ['name'=>'Max','age'=>39,'score'=>12],
43
            ['name'=>'Jonn','age'=>18,'score'=>8],
44
            ['name'=>'Anton','age'=>18,'score'=>36],
45
        ]);
46
        $iterator = new FilterIterator($data,['age'=>18,'>score'=>10]);
47
        $arr = array_values(iterator_to_array($iterator));
48
        $this->assertEquals($arr[0]['name'], 'Anton');
49
        $this->assertEquals(count($arr), 1);
50
    }
51
    
52
    public function testHydrateIterator()
53
    {
54
        $data = new \ArrayObject([
55
            ['name'=>'Max','age'=>39],
56
            ['name'=>'Jonn','age'=>18],
57
        ]);
58
        $iterator = new HydrateIterator($data, dummy\DummyModel::class);
59
        $arr = iterator_to_array($iterator);
60
        
61
        $this->assertEquals(get_class($arr[0]), dummy\DummyModel::class);
62
        $this->assertEquals($arr[0]->name, 'Max');
63
        $this->assertEquals($arr[0]->age, 39);
64
        
65
        $this->assertEquals(get_class($arr[1]), dummy\DummyModel::class);
66
        $this->assertEquals($arr[1]->name, 'Jonn');
67
        $this->assertEquals($arr[1]->age, 18);
68
    }
69
    
70
    public function testDehydrateIterator()
71
    {
72
        $data = [
73
            ['name'=>'Max','age'=>39],
74
            ['name'=>'Jonn','age'=>18],
75
        ];
76
        $hydrateIterator = new HydrateIterator(new \ArrayObject($data), dummy\DummyModel::class);
77
        $dehydrateIterator = new DehydrateIterator($hydrateIterator);
78
        $arr = iterator_to_array($dehydrateIterator);
79
        $this->assertCount(2, $arr);
80
        $this->assertIsArray($arr[0]);
81
        $this->assertIsArray($arr[1]);
82
        $this->assertEquals($data[0],$arr[0]);
83
        $this->assertEquals($data[1],$arr[1]);
84
    }
85
}
86