Passed
Push — master ( 1b1dbd...2b0006 )
by Petr
10:06
created

VolumeStreamTest::testHarderCounter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 13
rs 9.9
1
<?php
2
3
namespace StorageTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_storage\Storage\Target;
8
use kalanis\kw_storage\StorageException;
9
10
11
class VolumeStreamTest extends CommonTestClass
12
{
13
    public function tearDown(): void
14
    {
15
        if (is_file($this->mockTestFile())) {
16
            unlink($this->mockTestFile());
17
        }
18
        if (is_dir($this->mockTestFile())) {
19
            rmdir($this->mockTestFile());
20
        }
21
        parent::tearDown();
22
    }
23
24
    /**
25
     * @throws StorageException
26
     */
27
    public function testExists(): void
28
    {
29
        $volume = new Target\VolumeStream();
30
        $this->assertTrue($volume->check($this->getTestDir()));
31
        $this->expectException(StorageException::class);
32
        $volume->load($this->mockTestFile());
33
    }
34
35
    /**
36
     * @throws StorageException
37
     */
38
    public function testOperations(): void
39
    {
40
        $stream = fopen('php://memory', 'r+b');
41
        fwrite($stream, 'asdfghjklpoiuztrewqyxcvbnm');
42
        rewind($stream);
43
44
        $volume = new Target\VolumeStream();
45
        $this->assertFalse($volume->exists($this->mockTestFile()));
46
        $this->assertFalse($volume->isDir($this->mockTestFile()));
47
        $this->assertTrue($volume->save($this->mockTestFile(), $stream));
48
        $this->assertTrue($volume->exists($this->mockTestFile()));
49
        $this->assertFalse($volume->isDir($this->mockTestFile()));
50
        $this->assertEquals('asdfghjklpoiuztrewqyxcvbnm', stream_get_contents($volume->load($this->mockTestFile()), -1, 0));
51
        $this->assertTrue($volume->remove($this->mockTestFile()));
52
        $this->assertFalse($volume->exists($this->mockTestFile()));
53
        $this->assertFalse($volume->isDir($this->mockTestFile()));
54
    }
55
56
    /**
57
     * @throws StorageException
58
     */
59
    public function testSimpleCounter(): void
60
    {
61
        $stream = fopen('php://memory', 'r+b');
62
        fwrite($stream, '15');
63
        rewind($stream);
64
65
        $volume = new Target\VolumeStream();
66
        $this->assertFalse($volume->exists($this->mockTestFile()));
67
        $this->assertTrue($volume->save($this->mockTestFile(), $stream));
68
        $this->assertTrue($volume->decrement($this->mockTestFile()));
69
        $this->assertTrue($volume->decrement($this->mockTestFile()));
70
        $this->assertTrue($volume->increment($this->mockTestFile()));
71
        $this->assertEquals(14, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
72
        $this->assertTrue($volume->remove($this->mockTestFile()));
73
        $this->assertFalse($volume->exists($this->mockTestFile()));
74
    }
75
76
    /**
77
     * @throws StorageException
78
     */
79
    public function testHarderCounter(): void
80
    {
81
        $volume = new Target\VolumeStream();
82
        $this->assertFalse($volume->exists($this->mockTestFile()));
83
        $this->assertTrue($volume->decrement($this->mockTestFile()));
84
        $this->assertTrue($volume->increment($this->mockTestFile()));
85
        $this->assertEquals(1, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
86
        $this->assertTrue($volume->remove($this->mockTestFile()));
87
        $this->assertTrue($volume->increment($this->mockTestFile()));
88
        $this->assertTrue($volume->decrement($this->mockTestFile()));
89
        $this->assertEquals(0, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
90
        $this->assertTrue($volume->remove($this->mockTestFile()));
91
        $this->assertFalse($volume->exists($this->mockTestFile()));
92
    }
93
}
94