| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 | 
							- <?php
 
- use Grav\Framework\Filesystem\Filesystem;
 
- /**
 
-  * Class FilesystemTest
 
-  */
 
- class FilesystemTest extends \Codeception\TestCase\Test
 
- {
 
-     protected $class;
 
-     protected $tests = [
 
-         '' => [
 
-             'parent' => '',
 
-             'normalize' => '',
 
-             'dirname' => '',
 
-             'pathinfo' => [
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         '.' => [
 
-             'parent' => '',
 
-             'normalize' => '',
 
-             'dirname' => '.',
 
-             'pathinfo' => [
 
-                 'dirname' => '.',
 
-                 'basename' => '.',
 
-                 'extension' => '',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         './' => [
 
-             'parent' => '',
 
-             'normalize' => '',
 
-             'dirname' => '.',
 
-             'pathinfo' => [
 
-                 'dirname' => '.',
 
-                 'basename' => '.',
 
-                 'extension' => '',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         '././.' => [
 
-             'parent' => '',
 
-             'normalize' => '',
 
-             'dirname' => './.',
 
-             'pathinfo' => [
 
-                 'dirname' => './.',
 
-                 'basename' => '.',
 
-                 'extension' => '',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         '.file' => [
 
-             'parent' => '.',
 
-             'normalize' => '.file',
 
-             'dirname' => '.',
 
-             'pathinfo' => [
 
-                 'dirname' => '.',
 
-                 'basename' => '.file',
 
-                 'extension' => 'file',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         '/' => [
 
-             'parent' => '',
 
-             'normalize' => '/',
 
-             'dirname' => '/',
 
-             'pathinfo' => [
 
-                 'dirname' => '/',
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-             ]
 
-         ],
 
-         '/absolute' => [
 
-             'parent' => '/',
 
-             'normalize' => '/absolute',
 
-             'dirname' => '/',
 
-             'pathinfo' => [
 
-                 'dirname' => '/',
 
-                 'basename' => 'absolute',
 
-                 'filename' => 'absolute',
 
-             ]
 
-         ],
 
-         '/absolute/' => [
 
-             'parent' => '/',
 
-             'normalize' => '/absolute',
 
-             'dirname' => '/',
 
-             'pathinfo' => [
 
-                 'dirname' => '/',
 
-                 'basename' => 'absolute',
 
-                 'filename' => 'absolute',
 
-             ]
 
-         ],
 
-         '/very/long/absolute/path' => [
 
-             'parent' => '/very/long/absolute',
 
-             'normalize' => '/very/long/absolute/path',
 
-             'dirname' => '/very/long/absolute',
 
-             'pathinfo' => [
 
-                 'dirname' => '/very/long/absolute',
 
-                 'basename' => 'path',
 
-                 'filename' => 'path',
 
-             ]
 
-         ],
 
-         '/very/long/absolute/../path' => [
 
-             'parent' => '/very/long',
 
-             'normalize' => '/very/long/path',
 
-             'dirname' => '/very/long/absolute/..',
 
-             'pathinfo' => [
 
-                 'dirname' => '/very/long/absolute/..',
 
-                 'basename' => 'path',
 
-                 'filename' => 'path',
 
-             ]
 
-         ],
 
-         'relative' => [
 
-             'parent' => '.',
 
-             'normalize' => 'relative',
 
-             'dirname' => '.',
 
-             'pathinfo' => [
 
-                 'dirname' => '.',
 
-                 'basename' => 'relative',
 
-                 'filename' => 'relative',
 
-             ]
 
-         ],
 
-         'very/long/relative/path' => [
 
-             'parent' => 'very/long/relative',
 
-             'normalize' => 'very/long/relative/path',
 
-             'dirname' => 'very/long/relative',
 
-             'pathinfo' => [
 
-                 'dirname' => 'very/long/relative',
 
-                 'basename' => 'path',
 
-                 'filename' => 'path',
 
-             ]
 
-         ],
 
-         'path/to/file.jpg' => [
 
-             'parent' => 'path/to',
 
-             'normalize' => 'path/to/file.jpg',
 
-             'dirname' => 'path/to',
 
-             'pathinfo' => [
 
-                 'dirname' => 'path/to',
 
-                 'basename' => 'file.jpg',
 
-                 'extension' => 'jpg',
 
-                 'filename' => 'file',
 
-             ]
 
-         ],
 
-         'user://' => [
 
-             'parent' => '',
 
-             'normalize' => 'user://',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://.' => [
 
-             'parent' => '',
 
-             'normalize' => 'user://',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://././.' => [
 
-             'parent' => '',
 
-             'normalize' => 'user://',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://./././file' => [
 
-             'parent' => 'user://',
 
-             'normalize' => 'user://file',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => 'file',
 
-                 'filename' => 'file',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://./././folder/file' => [
 
-             'parent' => 'user://folder',
 
-             'normalize' => 'user://folder/file',
 
-             'dirname' => 'user://folder',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://folder',
 
-                 'basename' => 'file',
 
-                 'filename' => 'file',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://.file' => [
 
-             'parent' => 'user://',
 
-             'normalize' => 'user://.file',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => '.file',
 
-                 'extension' => 'file',
 
-                 'filename' => '',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user:///' => [
 
-             'parent' => '',
 
-             'normalize' => 'user:///',
 
-             'dirname' => 'user:///',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user:///',
 
-                 'basename' => '',
 
-                 'filename' => '',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user:///absolute' => [
 
-             'parent' => 'user:///',
 
-             'normalize' => 'user:///absolute',
 
-             'dirname' => 'user:///',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user:///',
 
-                 'basename' => 'absolute',
 
-                 'filename' => 'absolute',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user:///very/long/absolute/path' => [
 
-             'parent' => 'user:///very/long/absolute',
 
-             'normalize' => 'user:///very/long/absolute/path',
 
-             'dirname' => 'user:///very/long/absolute',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user:///very/long/absolute',
 
-                 'basename' => 'path',
 
-                 'filename' => 'path',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://relative' => [
 
-             'parent' => 'user://',
 
-             'normalize' => 'user://relative',
 
-             'dirname' => 'user://',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://',
 
-                 'basename' => 'relative',
 
-                 'filename' => 'relative',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://very/long/relative/path' => [
 
-             'parent' => 'user://very/long/relative',
 
-             'normalize' => 'user://very/long/relative/path',
 
-             'dirname' => 'user://very/long/relative',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://very/long/relative',
 
-                 'basename' => 'path',
 
-                 'filename' => 'path',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-         'user://path/to/file.jpg' => [
 
-             'parent' => 'user://path/to',
 
-             'normalize' => 'user://path/to/file.jpg',
 
-             'dirname' => 'user://path/to',
 
-             'pathinfo' => [
 
-                 'dirname' => 'user://path/to',
 
-                 'basename' => 'file.jpg',
 
-                 'extension' => 'jpg',
 
-                 'filename' => 'file',
 
-                 'scheme' => 'user',
 
-             ]
 
-         ],
 
-     ];
 
-     protected function _before(): void
 
-     {
 
-         $this->class = Filesystem::getInstance();
 
-     }
 
-     protected function _after(): void
 
-     {
 
-         unset($this->class);
 
-     }
 
-     /**
 
-      * @param array $tests
 
-      * @param string $method
 
-      */
 
-     protected function runTestSet(array $tests, $method): void
 
-     {
 
-         $class = $this->class;
 
-         foreach ($tests as $path => $candidates) {
 
-             if (!array_key_exists($method, $candidates)) {
 
-                 continue;
 
-             }
 
-             $expected = $candidates[$method];
 
-             $result = $class->{$method}($path);
 
-             self::assertSame($expected, $result, "Test {$method}('{$path}')");
 
-             if (function_exists($method) && !strpos($path, '://')) {
 
-                 $cmp_result = $method($path);
 
-                 self::assertSame($cmp_result, $result, "Compare to original {$method}('{$path}')");
 
-             }
 
-         }
 
-     }
 
-     public function testParent(): void
 
-     {
 
-         $this->runTestSet($this->tests, 'parent');
 
-     }
 
-     public function testNormalize(): void
 
-     {
 
-         $this->runTestSet($this->tests, 'normalize');
 
-     }
 
-     public function testDirname(): void
 
-     {
 
-         $this->runTestSet($this->tests, 'dirname');
 
-     }
 
-     public function testPathinfo(): void
 
-     {
 
-         $this->runTestSet($this->tests, 'pathinfo');
 
-     }
 
- }
 
 
  |