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 objectStores = [ michael@0: { name: "a", autoIncrement: false }, michael@0: { name: "b", autoIncrement: true } michael@0: ]; michael@0: michael@0: const indexes = [ michael@0: { name: "a", options: { } }, michael@0: { name: "b", options: { unique: true } } michael@0: ]; michael@0: michael@0: var j = 0; michael@0: for (let i in objectStores) { michael@0: let request = indexedDB.open(name, ++j); 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 = michael@0: db.createObjectStore(objectStores[i].name, michael@0: { keyPath: "id", michael@0: autoIncrement: objectStores[i].autoIncrement }); michael@0: michael@0: for (let j in indexes) { michael@0: objectStore.createIndex(indexes[j].name, "name", indexes[j].options); michael@0: } michael@0: michael@0: let data = { name: "Ben" }; michael@0: if (!objectStores[i].autoIncrement) { michael@0: data.id = 1; michael@0: } michael@0: michael@0: request = objectStore.add(data); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: event = yield undefined; michael@0: michael@0: ok(event.target.result == 1 || event.target.result == 2, "Good id"); michael@0: db.close(); michael@0: } michael@0: michael@0: executeSoon(function() { testGenerator.next(); }); michael@0: yield undefined; michael@0: michael@0: let request = indexedDB.open(name, j); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = grabEventAndContinueHandler; michael@0: let event = yield undefined; michael@0: michael@0: let db = event.target.result; michael@0: michael@0: for (let i in objectStores) { michael@0: for (let j in indexes) { michael@0: let objectStore = db.transaction(objectStores[i].name) michael@0: .objectStore(objectStores[i].name); michael@0: let index = objectStore.index(indexes[j].name); michael@0: michael@0: request = index.openCursor(); michael@0: request.onerror = errorHandler; michael@0: request.onsuccess = function (event) { michael@0: is(event.target.result.value.name, "Ben", "Good object"); michael@0: executeSoon(function() { testGenerator.next(); }); michael@0: } michael@0: yield undefined; michael@0: } michael@0: } michael@0: michael@0: finishTest(); michael@0: yield undefined; michael@0: } michael@0: