assertInstanceOf('\VirtualFileSystem\Structure\Root', $container->root()); $this->assertEquals('/', $container->root()->basename()); $this->assertEquals('/', $container->root()->path()); } public function testNodeAtAddressReturned() { $container = new Container(new Factory()); $container->root()->addDirectory(new Directory('dir1.1')); $container->root()->addDirectory($d12 = new Directory('dir1.2')); $d12->addDirectory($d21 = new Directory('dir2.1')); $d21->addDirectory($d221 = new Directory('dir2.2.1')); $d221->addFile($file = new File('testFile')); $this->assertEquals($d221, $container->nodeAt('/dir1.2/dir2.1/dir2.2.1')); } public function testHasNodeAtReturnsCorrectly() { $container = new Container(new Factory()); $container->root()->addDirectory(new Directory('dir1.1')); $this->assertTrue($container->hasNodeAt('/dir1.1')); $this->assertFalse($container->hasNodeAt('/dir')); } public function testDirectoryCreation() { $container = new Container(new Factory()); $container->createDir('/dir1'); $this->assertInstanceOf('\VirtualFileSystem\Structure\Directory', $container->nodeAt('/dir1')); //now recursive $container = new Container(new Factory()); $container->createDir('/dir1/dir2', true); $this->assertInstanceOf('\VirtualFileSystem\Structure\Directory', $container->nodeAt('/dir1/dir2')); //and mode $container = new Container(new Factory()); $dir = $container->createDir('/dir1/dir2/dir3', true, 0000); $this->assertEquals(0000 | Directory::S_IFTYPE, $dir->mode()); } public function testMkdirThrowsWhenNoParent() { $this->expectException('\VirtualFilesystem\Exception\NotFoundException'); $container = new Container(new Factory()); $container->createDir('/dir1/dir2'); } public function testFileCreation() { $container = new Container(new Factory()); $container->createFile('/file'); $this->assertInstanceOf('\VirtualFileSystem\Structure\File', $container->nodeAt('/file')); //with content $container->createFile('/file2', 'someData'); $this->assertEquals('someData', $container->fileAt('/file2')->data()); } public function testFileCreationThrowsWhenNoParent() { $this->expectException('\VirtualFilesystem\Exception\NotFoundException'); $container = new Container(new Factory()); $container->createFile('/dir/file'); } public function testFileCreationThrowsWhenTryingToOverride() { $container = new Container(new Factory()); $container->createFile('/file'); $this->expectException('\RuntimeException'); $container->createFile('/file'); } public function testMovingFilesWithinParent() { $container = new Container(new Factory()); $container->createFile('/file'); $container->move('/file', '/file2'); $this->assertTrue($container->hasNodeAt('/file2'), 'File exists at new location.'); $this->assertFalse($container->hasNodeAt('/file'), 'File does not exist at old location.'); } public function testMovingDirectoriesWithinParent() { $container = new Container(new Factory()); $container->root()->addDirectory($dir = new Directory('dir1')); $container->root()->addDirectory(new Directory('dir2')); $dir->addDirectory(new Directory('dir11')); $dir->addDirectory(new Directory('dir12')); $dir->addFile(new File('file')); $container->move('/dir1', '/dirMoved'); $this->assertTrue($container->hasNodeAt('/dir2'), 'Other parent directories not moved'); $this->assertTrue($container->hasNodeAt('/dirMoved'), 'Directory moved to new location'); $this->assertFalse($container->hasNodeAt('/dir1'), 'Directory does not exist at old location'); $this->assertTrue($container->hasNodeAt('/dirMoved/dir11'), 'Directory child of type Dir moved'); $this->assertTrue($container->hasNodeAt('/dirMoved/file'), 'Directory child of type File moved'); } public function testMovingToDifferentParent() { $container = new Container(new Factory()); $container->root()->addDirectory($dir = new Directory('dir1')); $container->root()->addDirectory(new Directory('dir2')); $dir->addDirectory(new Directory('dir11')); $dir->addDirectory(new Directory('dir12')); $dir->addFile(new File('file')); $container->move('/dir1', '/dir2/dirMoved'); $this->assertTrue($container->hasNodeAt('/dir2'), 'Other parent directories not moved'); $this->assertTrue($container->hasNodeAt('/dir2/dirMoved'), 'Directory moved to new location'); $this->assertFalse($container->hasNodeAt('/dir1'), 'Directory does not exist at old location'); $this->assertTrue($container->hasNodeAt('/dir2/dirMoved/dir11'), 'Directory child of type Dir moved'); $this->assertTrue($container->hasNodeAt('/dir2/dirMoved/file'), 'Directory child of type File moved'); } public function testMovingFileOntoExistingFileOverridesTarget() { $container = new Container(new Factory()); $container->createFile('/file1', 'file1'); $container->createFile('/file2', 'file2'); $container->move('/file1', '/file2'); $this->assertTrue($container->hasNodeAt('/file2')); $this->assertFalse($container->hasNodeAt('/file1')); $this->assertEquals('file1', $container->fileAt('/file2')->data()); } public function testMovingDirectoryOntoExistingDirectoryOverridesTarget() { $container = new Container(new Factory()); $container->createDir('/dir1'); $container->createDir('/dir2'); $container->move('/dir1', '/dir2'); $this->assertTrue($container->hasNodeAt('/dir2')); $this->assertFalse($container->hasNodeAt('/dir1')); } public function testMovingNonEmptyDirectoryOntoExistingDirectoryFails() { $container = new Container(new Factory()); $container->createDir('/dir1'); $container->createDir('/dir2'); $container->createFile('/dir2/file1', 'file'); $this->expectException('\RuntimeException', 'Can\'t override non empty directory.'); $container->move('/dir1', '/dir2'); } public function testMovingDirectoryOntoExistingFileThrows() { $container = new Container(new Factory()); $container->createDir('/dir1'); $container->createFile('/file2', 'file2'); $this->expectException('\RuntimeException', 'Can\'t move.'); $container->move('/dir1', '/file2'); } public function testMovingFileOntoExistingDirectoryThrows() { $container = new Container(new Factory()); $container->createDir('/dir1'); $container->createFile('/file2', 'file2'); $this->expectException('\RuntimeException', 'Can\'t move.'); $container->move('/file2', '/dir1'); } public function testMovingFileOntoInvalidPathWithFileParentThrows() { $container = new Container(new Factory()); $container->createFile('/file1'); $container->createFile('/file2', 'file2'); $this->expectException('VirtualFileSystem\Exception\NotDirectoryException'); $container->move('/file1', '/file2/file1'); } public function testRemoveDeletesNodeFromParent() { $container = new Container(new Factory()); $container->createFile('/file'); $container->remove('/file'); $this->assertFalse($container->hasNodeAt('/file'), 'File was removed'); $container->createDir('/dir'); $container->remove('/dir', true); $this->assertFalse($container->hasNodeAt('/dir'), 'Directory was removed'); } public function testRemoveThrowsWhenDeletingDirectoriesWithRecursiveFlag() { $container = new Container(new Factory()); $container->createDir('/dir'); $this->expectException('\RuntimeException', 'Won\'t non-recursively remove directory'); $container->remove('/dir'); } public function testLinkCreation() { $container = new Container(new Factory()); $container->createFile('/file'); $container->createLink('/link', '/file'); $this->assertInstanceOf('\VirtualFileSystem\Structure\Link', $container->nodeAt('/link')); } public function testLinkCreationThrowsWhenTryingToOverride() { $container = new Container(new Factory()); $container->createFile('/file'); $container->createLink('/link', '/file'); $this->expectException('\RuntimeException'); $container->createLink('/link', '/file'); } public function testCreatingDirectoryOnPathThrowsWhenParentIsAFile() { $container = new Container(new Factory()); $container->createFile('/file'); $this->expectException('VirtualFileSystem\Exception\NotDirectoryException'); $container->createDir('/file/dir'); } public function testFileAtThrowsWhenFileOnParentPath() { $container = new Container(new Factory()); $container->createFile('/file'); $this->expectException('VirtualFileSystem\Exception\NotFoundException'); $container->nodeAt('/file/file2'); } public function testCreateFileThrowsNonDirWhenParentNotDirectory() { $container = new Container(new Factory()); $container->createFile('/file'); $this->expectException('VirtualFileSystem\Exception\NotDirectoryException'); $container->createFile('/file/file2'); } public function testDirectoryAtThrowsNonDirIfReturnedNotDir() { $container = new Container(new Factory()); $container->createFile('/file'); $this->expectException('VirtualFileSystem\Exception\NotDirectoryException'); $container->directoryAt('/file'); } public function testDirectoryAtBubblesNotFoundOnBadPath() { $container = new Container(new Factory()); $this->expectException('VirtualFileSystem\Exception\NotFoundException'); $container->directoryAt('/dir'); } public function testDirectoryAtReturnsDirectory() { $container = new Container(new Factory()); $container->createDir('/dir'); $this->assertInstanceOf('VirtualFileSystem\Structure\Directory', $container->directoryAt('/dir')); } public function testFileAtThrowsNonFileIfReturnedNotFile() { $container = new Container(new Factory()); $container->createDir('/dir'); $this->expectException('VirtualFileSystem\Exception\NotFileException'); $container->fileAt('/dir'); } public function testFileAtBubblesNotFoundOnBadPath() { $container = new Container(new Factory()); $this->expectException('VirtualFileSystem\Exception\NotFoundException'); $container->fileAt('/file'); } public function testFileAtReturnsFile() { $container = new Container(new Factory()); $container->createFile('/file'); $this->assertInstanceOf('VirtualFileSystem\Structure\File', $container->fileAt('/file')); } } __halt_compiler();----SIGNATURE:----LfgCchB3mBanV6zgYlktGqBJD8ecax/bteTzWQLTDU0usP/u/wnz75XG0rsyRSqquvpjouE0ilAsncveCu2uXBAVveJAl4cgjXXGF31W1hgAeSbYWBAg9npfudORrqjXST5MCRwpnYpuipJoVwj55Q+bS867jn93fyjxVzzbItMs29YirPOCha81ZXthT/kUHGg1Ahu6slR+10/yy8Miz7MTPbB3TX8W9zlfVyko/aT/DkvS5SMgvA3zm8ChtZxARyqgBt2tVAIahvGMsnaL0trVhsOk1hMCeQMSXAVWRAJFJNT3gQ8JD4Fs9+4owZ8Mn60IoWK/qaooq1fIYH92fOT8oXiZ3COVyYYddxzP5FtNqx4QdbNyL8PUlrfYrK1WKETMm0g0qn1DmPj6QUTXwh0qATxRQswm2hnOkLQVaWQsufEDJxMYTFQRblGu8JcL35kaXnqYbdAaMkFELig0teEZ6ptcGKm177ZQJBCuylvRvyItWqBth1gAObcJB521wddr+bDYO29NmS3Fe/yH9MWG4l9iqYrzkOvYUF6qfGioRecALJYTc6hxKLYZySxwdI0BbdO8bTazwe057WTlUwDpBsovh2UgytME3M4dBCpDyDqIhNvNfvEbZJ6l0ccRDgqFaX7nHbzIwG9oQCAOnulDfiNqHB556IVvEaM0RZ4=----ATTACHMENT:----Nzk1MTQyNjk3NjEzODEzOCA2OTE2MjMwNjM5MTg4MzE2IDgxODk0ODMwNjU4ODk1Njg=