DirectoryTest::testToString()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 4
rs 10
1
<?php
2
/**
3
 * This file is part of Camino.
4
 *
5
 * (c) Sebastian Feldmann <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace SebastianFeldmann\Camino\Path;
11
12
use Exception;
13
use PHPUnit\Framework\TestCase;
14
15
/**
16
 * Class DirectoryTest
17
 *
18
 * @package SebastianFeldmann\Camino
19
 */
20
class DirectoryTest extends TestCase
21
{
22
    /**
23
     * Tests Directory::getPath
24
     */
25
    public function testPathUnix(): void
26
    {
27
        $directory = new Directory('/foo/bar/baz');
28
        $this->assertEquals('/foo/bar/baz', $directory->getPath());
29
        $this->assertEquals(3, $directory->getDepth());
30
    }
31
32
    /**
33
     * Tests Directory::getPath
34
     */
35
    public function testPathWindowsBackslash(): void
36
    {
37
        $directory = new Directory('c:\\foo\\bar\\baz');
38
        $this->assertEquals('c:\\foo\\bar\\baz', $directory->getPath());
39
        $this->assertEquals(3, $directory->getDepth());
40
    }
41
42
    /**
43
     * Tests Directory::getPath
44
     */
45
    public function testPathWindowsSlash(): void
46
    {
47
        $directory = new Directory('C:/foo/bar/baz');
48
        $this->assertEquals('C:/foo/bar/baz', $directory->getPath());
49
        $this->assertEquals(3, $directory->getDepth());
50
    }
51
52
    /**
53
     * Tests Directory::getPath
54
     */
55
    public function testPathStream(): void
56
    {
57
        $directory = new Directory('stream://foo/bar/baz');
58
        $this->assertEquals('stream://foo/bar/baz', $directory->getPath());
59
        $this->assertEquals(3, $directory->getDepth());
60
    }
61
62
    /**
63
     * Tests Directory::getSegments
64
     */
65
    public function testGetSegments(): void
66
    {
67
        $this->assertCount(3, (new Directory('/foo/bar/baz'))->getSegments());
68
        $this->assertCount(2, (new Directory('/foo/bar'))->getSegments());
69
        $this->assertCount(1, (new Directory('/foo'))->getSegments());
70
        $this->assertCount(0, (new Directory('/'))->getSegments());
71
    }
72
73
    /**
74
     * Tests Directory::isSubDirectory
75
     */
76
    public function testIsSubdirectoryPositive(): void
77
    {
78
        $dir     = new Directory('/foo/bar/baz');
79
        $this->assertTrue($dir->isSubDirectoryOf(new Directory('/foo/bar')));
80
        $this->assertTrue($dir->isSubDirectoryOf(new Directory('/foo')));
81
        $this->assertTrue($dir->isSubDirectoryOf(new Directory('/')));
82
    }
83
84
    /**
85
     * Tests Directory::isSubDirectory
86
     */
87
    public function testIsSubdirectoryNegative(): void
88
    {
89
        $dir    = new Directory('/foo/bar');
90
        $this->assertFalse($dir->isSubDirectoryOf(new Directory('/foo/bar/baz')));
91
        $this->assertFalse($dir->isSubDirectoryOf(new Directory('/fiz')));
92
        $this->assertFalse($dir->isSubDirectoryOf(new Directory('/fiz/baz')));
93
    }
94
95
    /**
96
     * Tests Directory::getPathRelativeFrom
97
     */
98
    public function testGetRelativePathFrom(): void
99
    {
100
        $dir    = new Directory('/foo/bar/baz');
101
        $parent = new Directory('/foo');
102
        $this->assertEquals('bar/baz', $dir->getRelativePathFrom($parent));
103
    }
104
105
    /**
106
     * Tests Directory::getPathRelativeFrom
107
     */
108
    public function testGetRelativePathFromNoChild(): void
109
    {
110
        $this->expectException(Exception::class);
111
        $dir = new Directory('/foo/bar/baz');
112
        $dir->getRelativePathFrom(new Directory('/fiz'));
113
    }
114
115
    /**
116
     * Tests Directory::__toString
117
     */
118
    public function testToString(): void
119
    {
120
        $dir = new Directory('/foo/bar/baz');
121
        $this->assertEquals('/foo/bar/baz', (string) $dir);
122
    }
123
124
    /**
125
     * Tests Directory::create
126
     */
127
    public function testFactoryExists(): void
128
    {
129
        $dir = Directory::create(__DIR__);
130
        $this->assertEquals(__DIR__, $dir->getPath());
131
    }
132
133
    /**
134
     * Tests Directory::create
135
     */
136
    public function testFactoryDoesNotExists(): void
137
    {
138
        $this->expectException(Exception::class);
139
140
        $dir = Directory::create('./foo');
141
        $this->assertEquals('should-not-be-tested', $dir->getPath());
142
    }
143
144
145
    /**
146
     * Tests Directory::create
147
     */
148
    public function testFactoryIsFile(): void
149
    {
150
        $this->expectException(Exception::class);
151
152
        $dir = Directory::create(__FILE__);
153
        $this->assertEquals('should-not-be-tested', $dir->getPath());
154
    }
155
}
156