chromium/third_party/blink/web_tests/storage/indexeddb/mozilla/resources/create-index-unique.js

// original test:
// http://mxr.mozilla.org/mozilla2.0/source/dom/indexedDB/test/test_create_index.html
// license of original test:
// " Any copyright is dedicated to the Public Domain.
//   http://creativecommons.org/publicdomain/zero/1.0/ "

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

description("Test IndexedDB's creating unique index and updating indexNames");

indexedDBTest(prepareDatabase);
function prepareDatabase()
{
    db = event.target.result;
    event.target.transaction.onabort = unexpectedAbortCallback;
    objectStore = evalAndLog("objectStore = db.createObjectStore('a', { keyPath: 'id', autoIncrement: true });");

    indexName = "1";
    indexKeyPath = "unique_value";
    index = evalAndLog("index = objectStore.createIndex(indexName, indexKeyPath, { unique: true });");
    shouldBe("index.name", "indexName");
    shouldBe("index.keyPath", "indexKeyPath");
    shouldBe("index.unique", "true");
    shouldBe("objectStore.indexNames.length", "1");

    foundNewlyCreatedIndex = false;
    for (var k = 0; k < objectStore.indexNames.length; k++) {
        if (objectStore.indexNames.item(k) == indexName) {
            foundNewlyCreatedIndex = true;
        }
    }
    shouldBeTrue("foundNewlyCreatedIndex");
    shouldBe("event.target.transaction.db", "db");
    shouldBe("event.target.transaction.mode", "'versionchange'");
    finishJSTest();
}