Passed
Push — master ( 7c550d...37ffb9 )
by Petr
02:16
created

VolumeStreamTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 44
c 1
b 0
f 0
dl 0
loc 77
rs 10
wmc 5
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
        $this->rmFile($this->mockTestFile('', false));
16
        $this->rmDir($this->mockTestFile('', false));
17
        parent::tearDown();
18
    }
19
20
    /**
21
     * @throws StorageException
22
     */
23
    public function testExists(): void
24
    {
25
        $volume = new Target\VolumeStream();
26
        $this->assertTrue($volume->check($this->getTestDir()));
27
        $this->expectException(StorageException::class);
28
        $volume->load($this->mockTestFile());
29
    }
30
31
    /**
32
     * @throws StorageException
33
     */
34
    public function testOperations(): void
35
    {
36
        $stream = fopen('php://memory', 'r+b');
37
        fwrite($stream, 'asdfghjklpoiuztrewqyxcvbnm');
38
        rewind($stream);
39
40
        $volume = new Target\VolumeStream();
41
        $this->assertFalse($volume->exists($this->mockTestFile()));
42
        $this->assertFalse($volume->isDir($this->mockTestFile()));
43
        $this->assertTrue($volume->save($this->mockTestFile(), $stream));
44
        $this->assertTrue($volume->exists($this->mockTestFile()));
45
        $this->assertFalse($volume->isDir($this->mockTestFile()));
46
        $this->assertEquals('asdfghjklpoiuztrewqyxcvbnm', stream_get_contents($volume->load($this->mockTestFile()), -1, 0));
47
        $this->assertTrue($volume->remove($this->mockTestFile()));
48
        $this->assertFalse($volume->exists($this->mockTestFile()));
49
        $this->assertFalse($volume->isDir($this->mockTestFile()));
50
    }
51
52
    /**
53
     * @throws StorageException
54
     */
55
    public function testSimpleCounter(): void
56
    {
57
        $stream = fopen('php://memory', 'r+b');
58
        fwrite($stream, '15');
59
        rewind($stream);
60
61
        $volume = new Target\VolumeStream();
62
        $this->assertFalse($volume->exists($this->mockTestFile()));
63
        $this->assertTrue($volume->save($this->mockTestFile(), $stream));
64
        $this->assertTrue($volume->decrement($this->mockTestFile()));
65
        $this->assertTrue($volume->decrement($this->mockTestFile()));
66
        $this->assertTrue($volume->increment($this->mockTestFile()));
67
        $this->assertEquals(14, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
68
        $this->assertTrue($volume->remove($this->mockTestFile()));
69
        $this->assertFalse($volume->exists($this->mockTestFile()));
70
    }
71
72
    /**
73
     * @throws StorageException
74
     */
75
    public function testHarderCounter(): void
76
    {
77
        $volume = new Target\VolumeStream();
78
        $this->assertFalse($volume->exists($this->mockTestFile()));
79
        $this->assertTrue($volume->decrement($this->mockTestFile()));
80
        $this->assertTrue($volume->increment($this->mockTestFile()));
81
        $this->assertEquals(1, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
82
        $this->assertTrue($volume->remove($this->mockTestFile()));
83
        $this->assertTrue($volume->increment($this->mockTestFile()));
84
        $this->assertTrue($volume->decrement($this->mockTestFile()));
85
        $this->assertEquals(0, intval(stream_get_contents($volume->load($this->mockTestFile()), -1, 0)));
86
        $this->assertTrue($volume->remove($this->mockTestFile()));
87
        $this->assertFalse($volume->exists($this->mockTestFile()));
88
    }
89
}
90