1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/indexedDB/test/unit/test_objectCursors.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,83 @@ 1.4 +/** 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.7 + */ 1.8 + 1.9 +var testGenerator = testSteps(); 1.10 + 1.11 +function testSteps() 1.12 +{ 1.13 + const name = this.window ? window.location.pathname : "Splendid Test"; 1.14 + 1.15 + const objectStores = [ 1.16 + { name: "a", autoIncrement: false }, 1.17 + { name: "b", autoIncrement: true } 1.18 + ]; 1.19 + 1.20 + const indexes = [ 1.21 + { name: "a", options: { } }, 1.22 + { name: "b", options: { unique: true } } 1.23 + ]; 1.24 + 1.25 + var j = 0; 1.26 + for (let i in objectStores) { 1.27 + let request = indexedDB.open(name, ++j); 1.28 + request.onerror = errorHandler; 1.29 + request.onupgradeneeded = grabEventAndContinueHandler; 1.30 + let event = yield undefined; 1.31 + 1.32 + let db = event.target.result; 1.33 + 1.34 + let objectStore = 1.35 + db.createObjectStore(objectStores[i].name, 1.36 + { keyPath: "id", 1.37 + autoIncrement: objectStores[i].autoIncrement }); 1.38 + 1.39 + for (let j in indexes) { 1.40 + objectStore.createIndex(indexes[j].name, "name", indexes[j].options); 1.41 + } 1.42 + 1.43 + let data = { name: "Ben" }; 1.44 + if (!objectStores[i].autoIncrement) { 1.45 + data.id = 1; 1.46 + } 1.47 + 1.48 + request = objectStore.add(data); 1.49 + request.onerror = errorHandler; 1.50 + request.onsuccess = grabEventAndContinueHandler; 1.51 + event = yield undefined; 1.52 + 1.53 + ok(event.target.result == 1 || event.target.result == 2, "Good id"); 1.54 + db.close(); 1.55 + } 1.56 + 1.57 + executeSoon(function() { testGenerator.next(); }); 1.58 + yield undefined; 1.59 + 1.60 + let request = indexedDB.open(name, j); 1.61 + request.onerror = errorHandler; 1.62 + request.onsuccess = grabEventAndContinueHandler; 1.63 + let event = yield undefined; 1.64 + 1.65 + let db = event.target.result; 1.66 + 1.67 + for (let i in objectStores) { 1.68 + for (let j in indexes) { 1.69 + let objectStore = db.transaction(objectStores[i].name) 1.70 + .objectStore(objectStores[i].name); 1.71 + let index = objectStore.index(indexes[j].name); 1.72 + 1.73 + request = index.openCursor(); 1.74 + request.onerror = errorHandler; 1.75 + request.onsuccess = function (event) { 1.76 + is(event.target.result.value.name, "Ben", "Good object"); 1.77 + executeSoon(function() { testGenerator.next(); }); 1.78 + } 1.79 + yield undefined; 1.80 + } 1.81 + } 1.82 + 1.83 + finishTest(); 1.84 + yield undefined; 1.85 +} 1.86 +