chromium/third_party/blink/web_tests/fast/files/resources/read-file-test-cases.js

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']);
}