michael@0: /** michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: var testGenerator = testSteps(); michael@0: michael@0: function testSteps() michael@0: { michael@0: const name = this.window ? window.location.pathname : "Splendid Test"; michael@0: michael@0: const objectStoreData = [ michael@0: { key: "1", value: "foo" }, michael@0: { key: "2", value: "bar" }, michael@0: { key: "3", value: "baz" } michael@0: ]; michael@0: michael@0: let request = indexedDB.open(name, 1); michael@0: request.onerror = errorHandler; michael@0: request.onupgradeneeded = grabEventAndContinueHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: let event = yield undefined; // upgradeneeded michael@0: michael@0: let db = event.target.result; michael@0: michael@0: let objectStore = db.createObjectStore("data", { keyPath: null }); michael@0: michael@0: // First, add all our data to the object store. michael@0: let addedData = 0; michael@0: for (let i in objectStoreData) { michael@0: request = objectStore.add(objectStoreData[i].value, michael@0: objectStoreData[i].key); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = function(event) { michael@0: if (++addedData == objectStoreData.length) { michael@0: testGenerator.send(event); michael@0: } michael@0: } michael@0: } michael@0: event = yield undefined; // testGenerator.send michael@0: michael@0: // Now create the index. michael@0: objectStore.createIndex("set", "", { unique: true }); michael@0: yield undefined; // success michael@0: michael@0: let trans = db.transaction("data", "readwrite"); michael@0: objectStore = trans.objectStore("data"); michael@0: index = objectStore.index("set"); michael@0: michael@0: let request = index.get("bar"); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: michael@0: let event = yield undefined; michael@0: michael@0: is(event.target.result, "bar", "Got correct result"); michael@0: michael@0: let request = objectStore.add("foopy", 4); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: michael@0: yield undefined; michael@0: michael@0: let request = index.get("foopy"); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: michael@0: let event = yield undefined; michael@0: michael@0: is(event.target.result, "foopy", "Got correct result"); michael@0: michael@0: let request = objectStore.add("foopy", 5); michael@0: request.addEventListener("error", new ExpectError("ConstraintError", true)); michael@0: request.onsuccess = unexpectedSuccessHandler; michael@0: michael@0: trans.oncomplete = grabEventAndContinueHandler; michael@0: michael@0: yield undefined; michael@0: yield undefined; michael@0: michael@0: finishTest(); michael@0: yield undefined; michael@0: }