/** Test DirectoryIterator */
 public function testDirectoryIterator()
 {
     $dir = new DirectoryStreamEntity();
     $file = new FileStreamEntity();
     file_put_contents('virtual/abc/test.txt', 'Happy Pandas');
     $it = new DirectoryIterator('virtual');
     $cnt = 0;
     $path = '';
     foreach ($it as $item) {
         if ($cnt == 0) {
             $this->assertEquals('.', $item->getBasename());
             //                $this->assertTrue($item->isDot());
         } elseif ($cnt == 1) {
             $this->assertEquals('..', $item->getBasename());
             //                $this->assertTrue($item->isDot());
         } elseif ($cnt == 2) {
             $this->assertEquals('abc', $item->getBasename());
             $this->assertTrue($it->isDir());
             $this->assertFalse($it->isFile());
             $this->assertEquals($dir->getGid(), $it->getGroup());
             $this->assertEquals($dir->getUid(), $it->getOwner());
             $expected = sprintf('%o', $dir->getPermissions());
             $result = substr(sprintf('%o', $it->getPerms()), -3);
             $this->assertEquals($expected, $result);
             $path = $item->getPath() . DIRECTORY_SEPARATOR . $item->getBasename();
         }
         $cnt++;
     }
     $it = new DirectoryIterator($path);
     $it->seek(2);
     $item = $it->current();
     $this->assertEquals('test.txt', $item->getBasename());
     $this->assertFalse($item->isDir());
     $this->assertTrue($item->isFile());
     $this->assertEquals($file->getGid(), $item->getGroup());
     $this->assertEquals($file->getUid(), $item->getOwner());
     $expected = sprintf('%o', $file->getPermissions());
     $result = substr(sprintf('%o', $item->getPerms()), -3);
     $this->assertEquals($expected, $result);
 }
Example #2
0
 private function openNewFile($path, $mode, $options, &$opened_path)
 {
     if (preg_match('/^rb$|^r$/', $mode)) {
         return false;
     }
     $e = new FileStreamEntity();
     $e->setPath($path);
     $e->setData('');
     $e->openResource();
     $this->stream_overrides[$path = $opened_path = $e->getPath()] = $e;
     $this->stepBackRebuildDirectories($path);
     $this->stream_entity = $e;
     return $this->resource = $e->getResource();
 }