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: var data = [ michael@0: { name: "inline key; key generator", michael@0: autoIncrement: true, michael@0: storedObject: {name: "Lincoln"}, michael@0: keyName: "id", michael@0: keyValue: undefined, michael@0: }, michael@0: { name: "inline key; no key generator", michael@0: autoIncrement: false, michael@0: storedObject: {id: 1, name: "Lincoln"}, michael@0: keyName: "id", michael@0: keyValue: undefined, michael@0: }, michael@0: { name: "out of line key; key generator", michael@0: autoIncrement: true, michael@0: storedObject: {name: "Lincoln"}, michael@0: keyName: undefined, michael@0: keyValue: undefined, michael@0: }, michael@0: { name: "out of line key; no key generator", michael@0: autoIncrement: false, michael@0: storedObject: {name: "Lincoln"}, michael@0: keyName: null, michael@0: keyValue: 1, michael@0: } michael@0: ]; michael@0: michael@0: for (let i = 0; i < data.length; i++) { michael@0: let test = data[i]; michael@0: michael@0: let request = indexedDB.open(name, i+1); michael@0: request.onerror = errorHandler; michael@0: request.onupgradeneeded = grabEventAndContinueHandler; michael@0: let event = yield undefined; michael@0: michael@0: let db = event.target.result; michael@0: michael@0: let objectStore = db.createObjectStore(test.name, michael@0: { keyPath: test.keyName, michael@0: autoIncrement: test.autoIncrement }); michael@0: michael@0: request = objectStore.add(test.storedObject, test.keyValue); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: event = yield undefined; michael@0: michael@0: let id = event.target.result; michael@0: request = objectStore.get(id); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: event = yield undefined; michael@0: michael@0: // Sanity check! michael@0: is(test.storedObject.name, event.target.result.name, michael@0: "The correct object was stored."); michael@0: michael@0: request = objectStore.delete(id); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: event = yield undefined; michael@0: michael@0: // Make sure it was removed. michael@0: request = objectStore.get(id); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: event = yield undefined; michael@0: michael@0: ok(event.target.result === undefined, "Object was deleted"); michael@0: db.close(); michael@0: } michael@0: michael@0: finishTest(); michael@0: yield undefined; michael@0: } michael@0: