var testCases = [
"testReadingNonExistentFileAsArrayBuffer",
"testReadingNonExistentFileAsBinaryString",
"testReadingNonExistentFileAsText",
"testReadingNonExistentFileAsDataURL",
"testReadingEmptyFileAsArrayBuffer",
"testReadingEmptyFileAsBinaryString",
"testReadingEmptyFileAsText",
"testReadingEmptyFileAsDataURL",
"testReadingUTF8EncodedFileAsArrayBuffer",
"testReadingUTF8EncodedFileAsBinaryString",
"testReadingBinaryFileAsArrayBuffer",
"testReadingBinaryFileAsBinaryString",
"testReadingUTF8EncodedFileAsText",
"testReadingUTF16BEBOMEncodedFileAsText",
"testReadingUTF16LEBOMEncodedFileAsText",
"testReadingUTF8BOMEncodedFileAsText",
"testReadingUTF16BEEncodedFileAsTextWithUTF16Encoding",
"testReadingUTF16BEBOMEncodedFileAsTextWithUTF8Encoding",
"testReadingUTF16BEBOMEncodedFileAsTextWithInvalidEncoding",
"testReadingUTF8EncodedFileAsDataURL",
];
var asyncTestCases = [
"testMultipleReads",
"testReadAgainAfterSuccessfulReadStep1",
"testReadAgainAfterSuccessfulReadStep2",
"testReadAgainAfterFailedReadStep1",
"testReadAgainAfterFailedReadStep2",
"testResultBeforeRead"
];
var testIndex = 0;
var initialized = false;
function ensureInitialized()
{
if (initialized)
return;
initialized = true;
if (isReadAsAsync())
testCases = testCases.concat(asyncTestCases);
}
function runNextTest(testFiles)
{
ensureInitialized();
if (testIndex < testCases.length) {
testIndex++;
self[testCases[testIndex - 1]](testFiles);
} else {
log("DONE");
}
}
function testReadingNonExistentFileAsArrayBuffer(testFiles)
{
log("Test reading a non-existent file as array buffer");
readBlobAsArrayBuffer(testFiles, testFiles['non-existent']);
}
function testReadingNonExistentFileAsBinaryString(testFiles)
{
log("Test reading a non-existent file as binary string");
readBlobAsBinaryString(testFiles, testFiles['non-existent']);
}
function testReadingNonExistentFileAsText(testFiles)
{
log("Test reading a non-existent file as text");
readBlobAsText(testFiles, testFiles['non-existent']);
}
function testReadingNonExistentFileAsDataURL(testFiles)
{
log("Test reading a non-existent file as data URL");
readBlobAsDataURL(testFiles, testFiles['non-existent']);
}
function testReadingEmptyFileAsArrayBuffer(testFiles)
{
log("Test reading an empty file as array buffer");
readBlobAsArrayBuffer(testFiles, testFiles['empty-file']);
}
function testReadingEmptyFileAsBinaryString(testFiles)
{
log("Test reading an empty file as binary string");
readBlobAsBinaryString(testFiles, testFiles['empty-file']);
}
function testReadingEmptyFileAsText(testFiles)
{
log("Test reading an empty file as text");
readBlobAsText(testFiles, testFiles['empty-file']);
}
function testReadingEmptyFileAsDataURL(testFiles)
{
log("Test reading an empty file as data URL");
readBlobAsDataURL(testFiles, testFiles['empty-file']);
}
function testReadingUTF8EncodedFileAsArrayBuffer(testFiles)
{
log("Test reading a UTF-8 file as array buffer");
readBlobAsArrayBuffer(testFiles, testFiles['UTF8-file']);
}
function testReadingUTF8EncodedFileAsBinaryString(testFiles)
{
log("Test reading a UTF-8 file as binary string");
readBlobAsBinaryString(testFiles, testFiles['UTF8-file']);
}
function testReadingBinaryFileAsArrayBuffer(testFiles)
{
log("Test reading a binary file as array buffer");
readBlobAsArrayBuffer(testFiles, testFiles['binary-file']);
}
function testReadingBinaryFileAsBinaryString(testFiles)
{
log("Test reading a binary file as binary string");
readBlobAsBinaryString(testFiles, testFiles['binary-file']);
}
function testReadingUTF8EncodedFileAsText(testFiles)
{
log("Test reading a UTF-8 file as text");
readBlobAsText(testFiles, testFiles['UTF8-file']);
}
function testReadingUTF16BEBOMEncodedFileAsText(testFiles)
{
log("Test reading a UTF-16BE BOM file as text");
readBlobAsText(testFiles, testFiles['UTF16BE-BOM-file']);
}
function testReadingUTF16LEBOMEncodedFileAsText(testFiles)
{
log("Test reading a UTF-16LE BOM file as text");
readBlobAsText(testFiles, testFiles['UTF16LE-BOM-file']);
}
function testReadingUTF8BOMEncodedFileAsText(testFiles)
{
log("Test reading a UTF-8 BOM file as text");
readBlobAsText(testFiles, testFiles['UTF8-BOM-file']);
}
function testReadingUTF16BEEncodedFileAsTextWithUTF16Encoding(testFiles)
{
log("Test reading a UTF-16BE file as text with UTF-16BE encoding");
readBlobAsText(testFiles, testFiles['UTF16BE-file'], "UTF-16BE");
}
function testReadingUTF16BEBOMEncodedFileAsTextWithUTF8Encoding(testFiles)
{
log("Test reading a UTF-16BE BOM file as text with UTF8 encoding");
readBlobAsText(testFiles, testFiles['UTF16BE-BOM-file'], "UTF-8");
}
function testReadingUTF16BEBOMEncodedFileAsTextWithInvalidEncoding(testFiles)
{
log("Test reading a UTF-16BE BOM file as text with invalid encoding");
readBlobAsText(testFiles, testFiles['UTF16BE-BOM-file'], "AnyInvalidEncoding");
}
function testReadingUTF8EncodedFileAsDataURL(testFiles)
{
log("Test reading a UTF-8 file as data URL");
readBlobAsDataURL(testFiles, testFiles['UTF8-file']);
}
function testMultipleReads(testFiles)
{
log("Test calling multiple concurrent read methods");
var reader = createReaderAsync(testFiles);
reader.readAsDataURL(testFiles['UTF8-file']);
try {
reader.readAsArrayBuffer(testFiles['UTF8-file']);
} catch (error) {
log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + error.message);
}
try {
reader.readAsBinaryString(testFiles['UTF8-file']);
} catch (error) {
log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + error.message);
}
try {
reader.readAsText(testFiles['UTF8-file']);
} catch (error) {
log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + error.message);
}
try {
reader.readAsDataURL(testFiles['UTF8-file']);
} catch (error) {
log("Received exception, code: " + error.code + ", name: " + error.name + ", message: " + error.message);
}
}
var readerToTestReread;
function testReadAgainAfterSuccessfulReadStep1(testFiles)
{
log("Test reading again after successful read");
readerToTestReread = createReaderAsync(testFiles);
readerToTestReread.readAsBinaryString(testFiles['UTF8-file']);
}
function testReadAgainAfterSuccessfulReadStep2(testFiles)
{
readerToTestReread.readAsDataURL(testFiles['UTF8-file']);
log("readyState after recalling read method: " + readerToTestReread.readyState);
log("result after recalling read method: " + readerToTestReread.result);
log("error after recalling read method: " + readerToTestReread.error);
}
function testReadAgainAfterFailedReadStep1(testFiles)
{
log("Test reading again after failed read");
readerToTestReread = createReaderAsync(testFiles);
readerToTestReread.readAsBinaryString(testFiles['non-existent']);
}
function testReadAgainAfterFailedReadStep2(testFiles)
{
readerToTestReread.readAsDataURL(testFiles['UTF8-file']);
log("readyState after recalling read method: " + readerToTestReread.readyState);
log("result after recalling read method: " + readerToTestReread.result);
log("error after recalling read method: " + readerToTestReread.error);
}
function testResultBeforeRead(testFiles)
{
log("Test result before reading method");
var reader = createReaderAsync(testFiles);
log("result before reading method: " + reader.result);
reader.readAsBinaryString(testFiles['empty-file']);
}