chromium/third_party/blink/web_tests/storage/indexeddb/resources/values-odd-types.js

if (this.importScripts) {
    importScripts('../../../resources/js-test.js');
    importScripts('shared.js');
}

description("Test IndexedDB odd value datatypes");

indexedDBTest(prepareDatabase);
function prepareDatabase()
{
    db = event.target.result;
    event.target.transaction.onabort = unexpectedAbortCallback;

    objectStore = evalAndLog("db.createObjectStore('foo', {autoIncrement: true});");

    canvas = document.createElement('canvas');
    context = canvas.getContext('2d');
    imagedata = context.createImageData(1, 1);
    validTypes = [{ description: 'regexp',    value: new RegExp('\\\\') },
                  { description: 'date',      value: new Date(0) },
                  { description: 'object',    value: new Object() },
                  { description: 'imagedata', value: imagedata },
    ];
    nextToAdd = 0;
    addData();
}

function addData()
{
    debug("adding " + validTypes[nextToAdd].description + " value");
    result = evalAndLog("objectStore.add(validTypes[nextToAdd].value)");
    result.onsuccess = ++nextToAdd < validTypes.length ? addData : openACursor;
    result.onerror = unexpectedErrorCallback;
}

function openACursor()
{
    valueIndex = 0;
    request = evalAndLog("request = objectStore.openCursor();");
    request.onerror = unexpectedErrorCallback;
    request.onsuccess = function (event) {
        cursor = evalAndLog("cursor = event.target.result;");
        if (cursor) {
            shouldBe("cursor.value.toString()", "validTypes[valueIndex].value.toString()");
            if (valueIndex == 1) {
                shouldBeEqualToString("cursor.value.toUTCString()", "Thu, 01 Jan 1970 00:00:00 GMT");
            }
            if (valueIndex == 3) {
                shouldBe("cursor.value.width", "1");
            }
            evalAndLog("cursor.continue();");
            evalAndLog("valueIndex++;");
        }
        else {
            finishJSTest();
        }
    }
}