Passed
Push — master ( c6a6de...ed87d4 )
by Kirill
02:46
created

InformationTest::testSizeMissingFile()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 6
c 1
b 1
f 0
dl 0
loc 10
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * This file is part of Spiral Framework package.
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
declare(strict_types=1);
11
12
namespace Spiral\Tests\Files;
13
14
use Spiral\Files\Exception\FileNotFoundException;
15
use Spiral\Files\Files;
16
use Spiral\Files\FilesInterface;
17
18
class InformationTest extends TestCase
19
{
20
    public function setUp(): void
21
    {
22
        $files = new Files();
23
        $files->ensureDirectory(self::FIXTURE_DIRECTORY, FilesInterface::RUNTIME);
24
    }
25
26
    public function tearDown(): void
27
    {
28
        $files = new Files();
29
        $files->deleteDirectory(self::FIXTURE_DIRECTORY, true);
30
    }
31
32
    public function testTime(): void
33
    {
34
        $files = new Files();
35
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
36
37
        $files->write($filename, 'data', FilesInterface::READONLY);
38
        $this->assertEquals(filemtime($filename), $files->time($filename));
39
    }
40
41
    public function testTimeMissingFile(): void
42
    {
43
        $this->expectExceptionMessageMatches("/File '.*test.txt' not found/");
44
        $this->expectException(FileNotFoundException::class);
45
46
        $files = new Files();
47
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
48
49
        $files->time($filename);
50
    }
51
52
    public function testMD5(): void
53
    {
54
        $files = new Files();
55
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
56
57
        $files->write($filename, 'data');
58
        $this->assertEquals(md5_file($filename), $files->md5($filename));
59
        $this->assertEquals(md5('data'), $files->md5($filename));
60
    }
61
62
    public function testMD5MissingFile(): void
63
    {
64
        $this->expectExceptionMessageMatches("/File '.*test.txt' not found/");
65
        $this->expectException(FileNotFoundException::class);
66
67
        $files = new Files();
68
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
69
70
        $files->md5($filename);
71
    }
72
73
    public function testExtension(): void
74
    {
75
        $files = new Files();
76
77
        $this->assertSame('txt', $files->extension('test.txt'));
78
        $this->assertSame('txt', $files->extension('test.TXT'));
79
        $this->assertSame('txt', $files->extension('test.data.TXT'));
80
    }
81
82
    public function testExists(): void
83
    {
84
        $files = new Files();
85
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
86
87
        $this->assertFalse($files->exists($filename));
88
        $this->assertSame(file_exists($filename), $files->exists($filename));
89
90
        $files->write($filename, 'data');
91
        $this->assertTrue($files->exists($filename));
92
        $this->assertSame(file_exists($filename), $files->exists($filename));
93
    }
94
95
    public function testSize(): void
96
    {
97
        $files = new Files();
98
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
99
100
        $this->assertFalse($files->exists($filename));
101
        $files->write($filename, 'some-data-string');
102
        $this->assertTrue($files->exists($filename));
103
104
        $this->assertSame(strlen('some-data-string'), $files->size($filename));
105
    }
106
107
    public function testSizeMissingFile(): void
108
    {
109
        $this->expectExceptionMessageMatches("/File '.*test.txt' not found/");
110
        $this->expectException(FileNotFoundException::class);
111
112
        $files = new Files();
113
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
114
115
        $this->assertFalse($files->exists($filename));
116
        $files->size($filename);
117
    }
118
119
    public function testLocalUri(): void
120
    {
121
        $files = new Files();
122
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
123
124
        $this->assertFalse($files->exists($filename));
125
        $files->write($filename, 'data');
126
        $this->assertSame($filename, $filename);
127
    }
128
129
    public function testIsFile(): void
130
    {
131
        $files = new Files();
132
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
133
134
        $this->assertFalse($files->exists($filename));
135
        $files->write($filename, 'data');
136
        $this->assertTrue($files->exists($filename));
137
138
        $this->assertTrue($files->isFile($filename));
139
        $this->assertSame(is_file($filename), $files->isFile($filename));
140
141
        $this->assertFalse($files->isDirectory($filename));
142
        $this->assertSame(is_dir($filename), $files->isDirectory($filename));
143
    }
144
145
    public function testIsMissingFile(): void
146
    {
147
        $files = new Files();
148
        $filename = self::FIXTURE_DIRECTORY . '/test.txt';
149
150
        $this->assertFalse($files->exists($filename));
151
152
        $this->assertFalse($files->isFile($filename));
153
        $this->assertSame(is_file($filename), $files->isFile($filename));
154
155
        $this->assertFalse($files->isDirectory($filename));
156
        $this->assertSame(is_dir($filename), $files->isDirectory($filename));
157
    }
158
159
    public function testIsDirectory(): void
160
    {
161
        $files = new Files();
162
        $directory = self::FIXTURE_DIRECTORY . '/directory/';
163
164
        $this->assertFalse($files->exists($directory));
165
        $files->ensureDirectory($directory);
166
        $this->assertTrue($files->exists($directory));
167
168
        $this->assertFalse($files->isFile($directory));
169
        $this->assertSame(is_file($directory), $files->isFile($directory));
170
171
        $this->assertTrue($files->isDirectory($directory));
172
        $this->assertSame(is_dir($directory), $files->isDirectory($directory));
173
    }
174
175
    public function testIsMissingDirectory(): void
176
    {
177
        $files = new Files();
178
        $directory = self::FIXTURE_DIRECTORY . '/directory/';
179
180
        $this->assertFalse($files->exists($directory));
181
182
        $this->assertFalse($files->isFile($directory));
183
        $this->assertSame(is_file($directory), $files->isFile($directory));
184
185
        $this->assertFalse($files->isDirectory($directory));
186
        $this->assertSame(is_dir($directory), $files->isDirectory($directory));
187
    }
188
189
    public function testIsDirectoryNoSlash(): void
190
    {
191
        $files = new Files();
192
        $directory = self::FIXTURE_DIRECTORY . '/directory';
193
194
        $this->assertFalse($files->exists($directory));
195
        $files->ensureDirectory($directory);
196
        $this->assertTrue($files->exists($directory));
197
198
        $this->assertFalse($files->isFile($directory));
199
        $this->assertSame(is_file($directory), $files->isFile($directory));
200
201
        $this->assertTrue($files->isDirectory($directory));
202
        $this->assertSame(is_dir($directory), $files->isDirectory($directory));
203
    }
204
}
205