Passed
Push — master ( d5232f...8b0585 )
by Dmitriy
03:41 queued 46s
created

StreamWrapperTest::testSeekStream()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 13
nc 1
nop 0
dl 0
loc 23
rs 9.8333
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Debug\Tests\Unit\Helper\StreamWrapper;
6
7
use PHPUnit\Framework\TestCase;
8
use Yiisoft\Yii\Debug\Tests\Support\Stub\PhpStreamProxy;
9
10
final class StreamWrapperTest extends TestCase
11
{
12
    protected function tearDown(): void
13
    {
14
        PhpStreamProxy::unregister();
15
    }
16
17
    public function testSeekStream(): void
18
    {
19
        $handle = fopen('php://memory', 'rw');
20
21
        PhpStreamProxy::register();
22
        $proxy = new PhpStreamProxy();
23
        $proxy->decorated->stream = $handle;
0 ignored issues
show
Bug introduced by
Accessing stream on the interface Yiisoft\Yii\Debug\Helper...\StreamWrapperInterface suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
24
25
        fwrite($handle, '1234567890');
26
27
        fseek($handle, 0);
28
29
        $firstElement = fread($handle, 2);
30
        $secondElement = fread($handle, 2);
31
32
        $this->assertNotSame($firstElement, $secondElement);
33
34
        fseek($handle, 0);
35
36
        $this->assertEquals($firstElement, fread($handle, 2));
37
38
        $proxy->stream_seek(0);
39
        $this->assertEquals($firstElement, fread($handle, 2));
40
    }
41
42
    public function testLockStream(): void
43
    {
44
        $handle = fopen('php://memory', 'rw');
45
46
        PhpStreamProxy::register();
47
        $proxy = new PhpStreamProxy();
48
        $proxy->decorated->stream = $handle;
0 ignored issues
show
Bug introduced by
Accessing stream on the interface Yiisoft\Yii\Debug\Helper...\StreamWrapperInterface suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
49
50
        fwrite($handle, '1234567890');
51
52
        fseek($handle, 0);
53
54
        $firstElement = fread($handle, 2);
55
56
        flock($handle, LOCK_EX);
57
        fwrite($handle, '1234567890');
58
        fseek($handle, 0);
59
60
        $this->assertEquals($firstElement, fread($handle, 2));
61
62
        $proxy->stream_seek(0);
63
        $this->assertEquals($firstElement, fread($handle, 2));
64
    }
65
}
66