private function doTestGetFileList() { $backendName = $this->backendClass(); $base = self::baseStorePath(); // Should have no errors $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont-notexists")); $files = array("{$base}/unittest-cont1/e/test1.txt", "{$base}/unittest-cont1/e/test2.txt", "{$base}/unittest-cont1/e/test3.txt", "{$base}/unittest-cont1/e/subdir1/test1.txt", "{$base}/unittest-cont1/e/subdir1/test2.txt", "{$base}/unittest-cont1/e/subdir2/test3.txt", "{$base}/unittest-cont1/e/subdir2/test4.txt", "{$base}/unittest-cont1/e/subdir2/subdir/test1.txt", "{$base}/unittest-cont1/e/subdir2/subdir/test2.txt", "{$base}/unittest-cont1/e/subdir2/subdir/test3.txt", "{$base}/unittest-cont1/e/subdir2/subdir/test4.txt", "{$base}/unittest-cont1/e/subdir2/subdir/test5.txt", "{$base}/unittest-cont1/e/subdir2/subdir/sub/test0.txt", "{$base}/unittest-cont1/e/subdir2/subdir/sub/120-px-file.txt"); // Add the files $ops = array(); foreach ($files as $file) { $this->prepare(array('dir' => dirname($file))); $ops[] = array('op' => 'create', 'content' => 'xxy', 'dst' => $file); } $status = $this->backend->doQuickOperations($ops); $this->assertGoodStatus($status, "Creation of files succeeded ({$backendName})."); $this->assertEquals(true, $status->isOK(), "Creation of files succeeded with OK status ({$backendName})."); // Expected listing at root $expected = array("e/test1.txt", "e/test2.txt", "e/test3.txt", "e/subdir1/test1.txt", "e/subdir1/test2.txt", "e/subdir2/test3.txt", "e/subdir2/test4.txt", "e/subdir2/subdir/test1.txt", "e/subdir2/subdir/test2.txt", "e/subdir2/subdir/test3.txt", "e/subdir2/subdir/test4.txt", "e/subdir2/subdir/test5.txt", "e/subdir2/subdir/sub/test0.txt", "e/subdir2/subdir/sub/120-px-file.txt"); sort($expected); // Actual listing (no trailing slash) at root $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1")); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Actual listing (no trailing slash) at root with advise $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1", 'adviseStat' => 1)); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Actual listing (with trailing slash) at root $list = array(); $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1/")); foreach ($iter as $file) { $list[] = $file; } sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Expected listing at subdir $expected = array("test1.txt", "test2.txt", "test3.txt", "test4.txt", "test5.txt", "sub/test0.txt", "sub/120-px-file.txt"); sort($expected); // Actual listing (no trailing slash) at subdir $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1/e/subdir2/subdir")); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Actual listing (no trailing slash) at subdir with advise $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1/e/subdir2/subdir", 'adviseStat' => 1)); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Actual listing (with trailing slash) at subdir $list = array(); $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1/e/subdir2/subdir/")); foreach ($iter as $file) { $list[] = $file; } sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName})."); // Actual listing (using iterator second time) $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct file listing ({$backendName}), second iteration."); // Actual listing (top files only) at root $iter = $this->backend->getTopFileList(array('dir' => "{$base}/unittest-cont1")); $list = $this->listToArray($iter); sort($list); $this->assertEquals(array(), $list, "Correct top file listing ({$backendName})."); // Expected listing (top files only) at subdir $expected = array("test1.txt", "test2.txt", "test3.txt", "test4.txt", "test5.txt"); sort($expected); // Actual listing (top files only) at subdir $iter = $this->backend->getTopFileList(array('dir' => "{$base}/unittest-cont1/e/subdir2/subdir")); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct top file listing ({$backendName})."); // Actual listing (top files only) at subdir with advise $iter = $this->backend->getTopFileList(array('dir' => "{$base}/unittest-cont1/e/subdir2/subdir", 'adviseStat' => 1)); $list = $this->listToArray($iter); sort($list); $this->assertEquals($expected, $list, "Correct top file listing ({$backendName})."); foreach ($files as $file) { // clean up $this->backend->doOperation(array('op' => 'delete', 'src' => $file)); } $iter = $this->backend->getFileList(array('dir' => "{$base}/unittest-cont1/not/exists")); foreach ($iter as $iter) { // no errors } }