description("DirectoryReader.readEntries() test with many entries.");
var fileSystem = null;
var reader = null;
var numFilesExpected = 150;
var numDirectoriesExpected = 150;
var resultEntries = [];
function endTest()
{
removeAllInDirectory(fileSystem.root, finishJSTest, errorCallback);
}
function errorCallback(error)
{
debug("Error occurred:" + error.name);
endTest();
}
var numFiles = 0, numDirectories = 0;
function verifyTestResult()
{
for (var i = 0; i < resultEntries.length; ++i) {
var entry = resultEntries[i];
if (entry.isDirectory) {
++numDirectories;
} else {
++numFiles;
}
}
shouldBe('numFiles', 'numFilesExpected');
shouldBe('numDirectories', 'numDirectoriesExpected');
}
function entriesCallback(entries)
{
resultEntries.push.apply(resultEntries, entries);
if (entries.length) {
reader.readEntries(entriesCallback, errorCallback);
} else {
// Must have read all the entries.
verifyTestResult();
endTest();
}
}
function runReadDirectoryTest()
{
reader = fileSystem.root.createReader();
reader.readEntries(entriesCallback, errorCallback);
}
function prepareForTest()
{
var helper = new JoinHelper();
var done = function() { helper.done(); };
for (var i = 0; i < numFilesExpected; ++i) {
var name = 'file' + i;
helper.run(function() { fileSystem.root.getFile(name, {create: true}, done, errorCallback); });
}
for (var i = 0; i < numDirectoriesExpected; ++i) {
var name = 'directory' + i;
helper.run(function() { fileSystem.root.getDirectory(name, {create: true}, done, errorCallback); });
}
helper.join(runReadDirectoryTest);
}
function successCallback(fs)
{
fileSystem = fs;
debug("Successfully obtained TEMPORARY FileSystem:" + fileSystem.name);
removeAllInDirectory(fileSystem.root, prepareForTest, errorCallback);
}
jsTestIsAsync = true;
webkitRequestFileSystem(TEMPORARY, 100, successCallback, errorCallback);