assertInstanceOf('\VirtualFilesystem\Container', $fs->container()); $this->assertInstanceOf('\VirtualFilesystem\Structure\Root', $fs->root()); } public function testFactoryIsSetDuringConstruction() { $fs = new FileSystem(); $this->assertInstanceOf('\VirtualFilesystem\Factory', $fs->container()->factory()); } public function testWrapperIsRegisteredDuringObjectLifetime() { $fs = new FileSystem(); $scheme = $fs->scheme(); $this->assertTrue(in_array($scheme, stream_get_wrappers()), 'Wrapper registered in __construct()'); unset($fs); //provoking __destruct $this->assertFalse(in_array($scheme, stream_get_wrappers()), 'Wrapper unregistered in __destruct()'); } public function testFilesystemFactoryAddedToDefaultContextDuringObjectLifetime() { $fs = new FileSystem(); $scheme = $fs->scheme(); $options = stream_context_get_options(stream_context_get_default()); $this->assertArrayHasKey($scheme, $options, 'Wrraper key registered in context'); $this->assertArrayHasKey('Container', $options[$scheme], 'Container registered in context key'); //can't find a way to unset default context yet //unset($fs); //provoking __destruct //$options = stream_context_get_options(stream_context_get_default()); //$this->assertArrayNotHasKey('anotherVFSwrapper', $options, 'Wrraper key not registered in context'); } public function testDefaultContextOptionsAreExtended() { stream_context_set_default(array('someContext' => array('a' => 'b'))); $fs = new FileSystem(); $scheme = $fs->scheme(); $options = stream_context_get_options(stream_context_get_default()); $this->assertArrayHasKey($scheme, $options, 'FS Context option present'); $this->assertArrayHasKey('someContext', $options, 'Previously existing context option present'); } public function testCreateDirectoryCreatesDirectories() { $fs = new FileSystem(); $directory = $fs->createDirectory('/dir/dir', true); $this->assertInstanceOf('\VirtualFileSystem\Structure\Directory', $directory); $this->assertEquals('/dir/dir', $directory->path()); } public function testCreateFileCreatesFile() { $fs = new FileSystem(); $file = $fs->createFile('/file', 'data'); $this->assertInstanceOf('\VirtualFileSystem\Structure\File', $file); $this->assertEquals('/file', $file->path()); $this->assertEquals('data', $file->data()); } public function testCreateStuctureMirrorsStructure() { $fs = new FileSystem(); $fs->createStructure(['file' => 'omg', 'file2' => 'gmo']); $file = $fs->container()->fileAt('/file'); $file2 = $fs->container()->fileAt('/file2'); $this->assertEquals('omg', $file->data()); $this->assertEquals('gmo', $file2->data()); $fs->createStructure(['dir' => [], 'dir2' => []]); $dir = $fs->container()->nodeAt('/dir'); $dir2 = $fs->container()->nodeAt('/dir2'); $this->assertInstanceOf('VirtualFileSystem\Structure\Directory', $dir); $this->assertInstanceOf('VirtualFileSystem\Structure\Directory', $dir2); $fs->createStructure([ 'dir3' => [ 'file' => 'nested', 'dir4' => [ 'dir5' => [ 'file5' => 'nestednested' ] ] ] ]); $dir = $fs->container()->directoryAt('/dir3'); $this->assertInstanceOf('VirtualFileSystem\Structure\Directory', $dir); $file = $fs->container()->fileAt('/dir3/file'); $this->assertEquals('nested', $file->data()); $dir = $fs->container()->directoryAt('/dir3/dir4/dir5'); $this->assertInstanceOf('VirtualFileSystem\Structure\Directory', $dir); $file = $fs->container()->fileAt('/dir3/dir4/dir5/file5'); $this->assertEquals('nestednested', $file->data()); } } __halt_compiler();----SIGNATURE:----e3J6wW3IVIoKEBuRRLkIgqxW+pqOaeRZp8gInBNlqjbrk85qbBrNOe16UbNSP4Uyh+aaGvn+x6pgFF7fhLns3mQ7t/TaakyH2eTiVTyjJ+9WDusC6TxLdGNgAtbjGjrB2dWWozR8GdnvQ3OuGF4lYMkDdZks41GnFEHMqIxYM9OgZIe2JW8IDF0sna2jpNJdOK6BrrP1uhRMT9ouktTn6FBtQZx5OnCArnB9LL0aHI3lVnna6aux8dLt6ofKcH6usdKVb9oYk75EKl83TOiGZYSZL2WeIwzumGXGPchRRiWyp0H3pfC8dWI1H13IZrSTlJUxcbeZRe7ltk75mv6zKNVz0JXHg3QxyoW6kRfnfwzNwEPyRYVauNUk7VJuNYl6SDPdySLYXi+NayTyuGQx9qvRgAL+vCZ1Wj9CtVq2U41rcSYk77SOb529pBAqlgZO9o5KUYJqtKVChBrMGACVuP1ZGNQJa2OtUUdlQcFZGKRHQfI46MC4e78PX0dipiZuo3tN7IDGxL7mLeStNE3hlVEqfXg9ePc3AgOjHHv04GUqAQTPc4EYzNGTc6eC+RfgJkuEsPxioj1+urOVzeB1okF5RN0TOG/WIpJz01xIt/H9dlsCGUBf4g+9oXnOFVmzARm3jdKQFPmXCqJYW5dQ3e6Egdn/0CzozJyAWefmiF0=----ATTACHMENT:----NjIzNzA1MTE5MDk2MTQwMSAzNzU2ODEzMTI4MzM4MzA5IDUzMzQwMTcxMDI1NzMzNDI=