Completed
Pull Request — master (#36)
by Alexander
04:00
created

DependencyTest::testIsChangedReusable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Yiisoft\Cache\Tests\Dependency;
4
5
use Yiisoft\Cache\ArrayCache;
6
use Yiisoft\Cache\Cache;
7
use Yiisoft\Cache\Dependency\Dependency;
8
use Yiisoft\Cache\Dependency\TagDependency;
9
10
/**
11
 * Dependency (abstract) tests.
12
 * @group caching
13
 */
14
class DependencyTest extends DependencyTestCase
15
{
16
    public function testResetReusableData(): void
17
    {
18
        $value = ['dummy'];
19
        $dependency = new MockDependency();
20
        $this->setInaccessibleProperty($dependency, 'reusableData', $value, false);
21
        $this->assertSameExceptObject($value, $this->getInaccessibleProperty($dependency, 'reusableData'));
22
23
        $dependency->resetReusableData();
24
25
        $this->assertSameExceptObject([], $this->getInaccessibleProperty($dependency, 'reusableData'));
26
    }
27
28
    public function testGenerateReusableHash(): void
29
    {
30
        $dependency = $this->getMockForAbstractClass(Dependency::class);
31
        $this->setInaccessibleProperty($dependency, 'data', 'dummy');
32
33
        $result = $this->invokeMethod($dependency, 'generateReusableHash');
34
35
        $this->assertSameExceptObject(5, strlen($this->getInaccessibleProperty($dependency, 'data')));
36
        $this->assertSameExceptObject(40, strlen($result));
37
    }
38
39
    public function testIsChangedReusable(): void
40
    {
41
        /* @var $dependency Dependency */
42
        $dependency = $this->getMockForAbstractClass(Dependency::class);
43
        $dependency->markAsReusable();
44
        $this->assertDependencyNotChanged($dependency);
45
46
        $this->setInaccessibleProperty($dependency, 'data', 'changed');
47
48
        $this->assertDependencyChanged($dependency);
49
    }
50
51
    public function testIsChanged(): void
52
    {
53
        /* @var $dependency Dependency */
54
        $dependency = $this->getMockForAbstractClass(Dependency::class);
55
        $this->assertDependencyNotChanged($dependency);
56
57
        $this->setInaccessibleProperty($dependency, 'data', 'changed');
58
59
        $this->assertDependencyChanged($dependency);
60
    }
61
62
    public function testEvaluateDependencyReusable()
63
    {
64
        $cache = new Cache(new ArrayCache());
65
        $dependency = new TagDependency('test');
66
        $dependency->markAsReusable();
67
        $cache->set('a', 1, null, $dependency);
68
        TagDependency::invalidate($cache, 'test');
69
        $data1 = $this->getInaccessibleProperty($dependency, 'data');
70
        $cache->set('b', 2, null, $dependency);
71
        $data2 = $this->getInaccessibleProperty($dependency, 'data');
72
        $this->assertEquals($data1, $data2);
73
    }
74
}
75