コード例 #1
0
 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
     }
 }