/** * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ /* exported testGenerator */ var testGenerator = testSteps(); function* testSteps() { const name = this.window ? window.location.pathname : "Splendid Test"; var data = [ { name: "inline key; key generator", autoIncrement: true, storedObject: { name: "Lincoln" }, keyName: "id", keyValue: undefined, }, { name: "inline key; no key generator", autoIncrement: false, storedObject: { id: 1, name: "Lincoln" }, keyName: "id", keyValue: undefined, }, { name: "out of line key; key generator", autoIncrement: true, storedObject: { name: "Lincoln" }, keyName: undefined, keyValue: undefined, }, { name: "out of line key; no key generator", autoIncrement: false, storedObject: { name: "Lincoln" }, keyName: null, keyValue: 1, }, ]; for (let i = 0; i < data.length; i++) { let test = data[i]; let request = indexedDB.open(name, i + 1); request.onerror = errorHandler; request.onupgradeneeded = grabEventAndContinueHandler; request.onsuccess = grabEventAndContinueHandler; let event = yield undefined; let db = event.target.result; db.onversionchange = function (event) { event.target.close(); }; let objectStore = db.createObjectStore(test.name, { keyPath: test.keyName, autoIncrement: test.autoIncrement, }); request = objectStore.add(test.storedObject, test.keyValue); request.onerror = errorHandler; request.onsuccess = grabEventAndContinueHandler; event = yield undefined; let id = event.target.result; request = objectStore.get(id); request.onerror = errorHandler; request.onsuccess = grabEventAndContinueHandler; event = yield undefined; // Sanity check! is( test.storedObject.name, event.target.result.name, "The correct object was stored." ); request = objectStore.delete(id); request.onerror = errorHandler; request.onsuccess = grabEventAndContinueHandler; event = yield undefined; // Make sure it was removed. request = objectStore.get(id); request.onerror = errorHandler; request.onsuccess = grabEventAndContinueHandler; event = yield undefined; ok(event.target.result === undefined, "Object was deleted"); // Wait for success yield undefined; } finishTest(); }