assertEquals(sprintf('dir_%d', $i), $f); } else { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } $i++; } closedir($dir); $this->assertEquals(10, $i); } public function testListSubDirectory() { $dir = opendir('git://'.TESTS_REPO_PATH_1.'/dir_0'); $i = 0; while ($f = readdir($dir)) { $this->assertEquals('file.txt', $f); $i++; } closedir($dir); $this->assertEquals(1, $i); } public function testListDirectoryWithRef() { $c = $this->getRepository(); $firstCommit = $c->writeFile('test_0.txt', 'Test 0'); $c->writeFile('test_1.txt', 'Test 1'); $dir = opendir('git://'.TESTS_REPO_PATH_1); $i = 0; while ($f = readdir($dir)) { if ($i < 5) { $this->assertEquals(sprintf('dir_%d', $i), $f); } else if ($i < 10) { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } else { $this->assertEquals(sprintf('test_%d.txt', $i % 10), $f); } $i++; } closedir($dir); $this->assertEquals(12, $i); $dir = opendir('git://'.TESTS_REPO_PATH_1.'#HEAD^'); $i = 0; while ($f = readdir($dir)) { if ($i < 5) { $this->assertEquals(sprintf('dir_%d', $i), $f); } else if ($i < 10) { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } else { $this->assertEquals(sprintf('test_%d.txt', $i % 10), $f); } $i++; } closedir($dir); $this->assertEquals(11, $i); $dir = opendir('git://'.TESTS_REPO_PATH_1.'#HEAD^^'); $i = 0; while ($f = readdir($dir)) { if ($i < 5) { $this->assertEquals(sprintf('dir_%d', $i), $f); } else { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } $i++; } closedir($dir); $this->assertEquals(10, $i); $dir = opendir('git://'.TESTS_REPO_PATH_1.'#'.$firstCommit); $i = 0; while ($f = readdir($dir)) { if ($i < 5) { $this->assertEquals(sprintf('dir_%d', $i), $f); } else if ($i < 10) { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } else { $this->assertEquals(sprintf('test_%d.txt', $i % 10), $f); } $i++; } closedir($dir); $this->assertEquals(11, $i); } public function testListDirectoryWithIterator() { $dir = new \FilesystemIterator( 'git://'.TESTS_REPO_PATH_1, \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $i = 0; foreach ($dir as $f => $fi) { if ($i < 5) { $this->assertEquals(sprintf('dir_%d', $i), $f); } else { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } $i++; } $this->assertEquals(10, $i); } public function testListDirectoryWithRecursiveIterator() { $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1, \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; foreach ($it as $f => $fi) { if ($i < 10) { if ($i % 2 === 0) { $this->assertEquals(sprintf('dir_%d', $i / 2), $f); } else { $this->assertEquals('file.txt', $f); } } else { $this->assertEquals(sprintf('file_%d.txt', $i % 5), $f); } $i++; } $this->assertEquals(15, $i); } public function testListDirectoryWithRefWithRecursiveIterator() { $c = $this->getRepository(); for ($i = 0; $i < 5; $i++) { $dir = sprintf('dir_%d', $i); $path = TESTS_REPO_PATH_1.'/'.$dir.'/test.txt'; $c->writeFile($path, 'Test'); } $c->writeFile('test.txt', 'Test'); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1, \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'test.txt', 'dir_2', 'file.txt', 'test.txt', 'dir_3', 'file.txt', 'test.txt', 'dir_4', 'file.txt', 'test.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt', 'test.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'test.txt', 'dir_2', 'file.txt', 'test.txt', 'dir_3', 'file.txt', 'test.txt', 'dir_4', 'file.txt', 'test.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt', ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'test.txt', 'dir_2', 'file.txt', 'test.txt', 'dir_3', 'file.txt', 'test.txt', 'dir_4', 'file.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^^^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'test.txt', 'dir_2', 'file.txt', 'test.txt', 'dir_3', 'file.txt', 'dir_4', 'file.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^^^^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'test.txt', 'dir_2', 'file.txt', 'dir_3', 'file.txt', 'dir_4', 'file.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^^^^^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'test.txt', 'dir_1', 'file.txt', 'dir_2', 'file.txt', 'dir_3', 'file.txt', 'dir_4', 'file.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); $dir = new \RecursiveDirectoryIterator( 'git://'.TESTS_REPO_PATH_1.'#HEAD^^^^^^', \FilesystemIterator::KEY_AS_FILENAME | \FilesystemIterator::CURRENT_AS_FILEINFO ); $it = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST); $i = 0; $ex = array( 'dir_0', 'file.txt', 'dir_1', 'file.txt', 'dir_2', 'file.txt', 'dir_3', 'file.txt', 'dir_4', 'file.txt', 'file_0.txt', 'file_1.txt', 'file_2.txt', 'file_3.txt', 'file_4.txt' ); foreach ($it as $f => $fi) { $this->assertEquals($ex[$i], $f); $i++; } $this->assertEquals(count($ex), $i); } }