fs

Форк
0
/
DirTest.php 
105 строк · 2.6 Кб
1
<?php
2

3
namespace Fs;
4

5
use PHPUnit\Framework\Attributes\DataProvider;
6
use Upside\Std\Fs\Dir;
7
use PHPUnit\Framework\TestCase;
8

9
define('TMP_DIR', \dirname(__DIR__) . '/dir');
10

11
class DirTest extends TestCase
12
{
13
    public function setUp(): void
14
    {
15
        self::create_dir('');
16
    }
17

18
    // TODO: Наверно стоит очищать стандартными средствами
19
    public function tearDown(): void
20
    {
21
        $dir = Dir::from(TMP_DIR);
22
        $dir->remove();
23
    }
24

25
    private static function tmp_dir(string $dir = ''): string
26
    {
27
        return TMP_DIR . $dir;
28
    }
29

30
    private static function create_dir(string $dir): string
31
    {
32
        $dir = self::tmp_dir($dir);
33
        if (!\mkdir(directory: $dir, recursive: true) && !\is_dir($dir)) {
34
            throw new \RuntimeException(\sprintf('Directory "%s" was not created', $dir));
35
        }
36

37
        return $dir;
38
    }
39

40
    public static function paths_provider(): iterable
41
    {
42
        yield ['/path/to/fake', false];
43
        yield [self::tmp_dir('/fake'), false];
44
        yield [self::tmp_dir(), true];
45
    }
46

47
    #[DataProvider('paths_provider')]
48
    public function test_exists(string $path, bool $exists): void
49
    {
50
        $dir = Dir::from($path);
51
        $this->assertEquals($exists, $dir->exists());
52
    }
53

54
    #[DataProvider('paths_provider')]
55
    public function test_not_exists(string $path, bool $exists): void
56
    {
57
        $dir = Dir::from($path);
58
        $this->assertEquals($exists, !$dir->not_exists());
59
    }
60

61
    #[DataProvider('paths_provider')]
62
    public function test__toString(string $path): void
63
    {
64
        $dir = Dir::from($path);
65
        $this->assertEquals($path, (string)$dir);
66
    }
67

68
    public function test_rename(): void
69
    {
70
        $source_dir = Dir::from($source_name = self::create_dir('/to_rename'));
71
        $renamed_dir = $source_dir->rename($new_name = self::tmp_dir('/renamed'));
72

73
        $this->assertEquals($source_name, (string)$source_dir);
74
        $this->assertEquals($new_name, (string)$renamed_dir);
75
        $this->assertTrue($renamed_dir->exists());
76
        $this->assertFalse($source_dir->exists());
77
    }
78

79
    public function test_clean(): void
80
    {
81

82
    }
83

84
    public function test_remove(): void
85
    {
86

87
    }
88

89
    public static function make_provider(): iterable
90
    {
91
        yield [self::tmp_dir('/test')];
92
        yield [self::tmp_dir('/test/test')];
93
        yield [self::tmp_dir('/test/test/test')];
94
    }
95

96
    #[DataProvider('make_provider')]
97
    public function test_make(string $to_make_path): void
98
    {
99
        $to_make_dir = Dir::from($to_make_path);
100

101
        $to_make_dir->make();
102

103
        $this->assertDirectoryExists($to_make_path);
104
    }
105
}
106

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.