1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/indexedDB/test/unit/test_index_getAll.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,191 @@ 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 + const objectStoreName = "People"; 1.15 + 1.16 + const objectStoreData = [ 1.17 + { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, 1.18 + { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, 1.19 + { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } }, 1.20 + { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, 1.21 + { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, 1.22 + { key: "237-23-7737", value: { name: "Pat", height: 65 } } 1.23 + ]; 1.24 + 1.25 + const indexData = [ 1.26 + { name: "name", keyPath: "name", options: { unique: true } }, 1.27 + { name: "height", keyPath: "height", options: { unique: false } }, 1.28 + { name: "weight", keyPath: "weight", options: { unique: false } } 1.29 + ]; 1.30 + 1.31 + const objectStoreDataNameSort = [ 1.32 + { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, 1.33 + { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, 1.34 + { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, 1.35 + { key: "237-23-7737", value: { name: "Pat", height: 65 } }, 1.36 + { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } }, 1.37 + { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } } 1.38 + ]; 1.39 + 1.40 + const objectStoreDataWeightSort = [ 1.41 + { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, 1.42 + { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, 1.43 + { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, 1.44 + { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, 1.45 + { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } } 1.46 + ]; 1.47 + 1.48 + const objectStoreDataHeightSort = [ 1.49 + { key: "237-23-7733", value: { name: "Ann", height: 52, weight: 110 } }, 1.50 + { key: "237-23-7735", value: { name: "Sue", height: 58, weight: 130 } }, 1.51 + { key: "237-23-7732", value: { name: "Bob", height: 60, weight: 120 } }, 1.52 + { key: "237-23-7736", value: { name: "Joe", height: 65, weight: 150 } }, 1.53 + { key: "237-23-7737", value: { name: "Pat", height: 65 } }, 1.54 + { key: "237-23-7734", value: { name: "Ron", height: 73, weight: 180 } } 1.55 + ]; 1.56 + 1.57 + let request = indexedDB.open(name, 1); 1.58 + request.onerror = errorHandler; 1.59 + request.onupgradeneeded = grabEventAndContinueHandler; 1.60 + request.onsuccess = grabEventAndContinueHandler; 1.61 + let event = yield undefined; 1.62 + 1.63 + let db = event.target.result; 1.64 + 1.65 + let objectStore = db.createObjectStore(objectStoreName); 1.66 + 1.67 + // First, add all our data to the object store. 1.68 + let addedData = 0; 1.69 + for (let i in objectStoreData) { 1.70 + request = objectStore.add(objectStoreData[i].value, 1.71 + objectStoreData[i].key); 1.72 + request.onerror = errorHandler; 1.73 + request.onsuccess = function(event) { 1.74 + if (++addedData == objectStoreData.length) { 1.75 + testGenerator.send(event); 1.76 + } 1.77 + } 1.78 + } 1.79 + yield undefined; 1.80 + ok(true, "1"); 1.81 + 1.82 + // Now create the indexes. 1.83 + for (let i in indexData) { 1.84 + objectStore.createIndex(indexData[i].name, indexData[i].keyPath, 1.85 + indexData[i].options); 1.86 + } 1.87 + 1.88 + is(objectStore.indexNames.length, indexData.length, "Good index count"); 1.89 + yield undefined; 1.90 + 1.91 + ok(true, "2"); 1.92 + objectStore = db.transaction(objectStoreName) 1.93 + .objectStore(objectStoreName); 1.94 + 1.95 + request = objectStore.index("height").mozGetAllKeys(65); 1.96 + request.onerror = errorHandler; 1.97 + request.onsuccess = grabEventAndContinueHandler; 1.98 + event = yield undefined; 1.99 + ok(true, "3"); 1.100 + 1.101 + is(event.target.result instanceof Array, true, "Got an array object"); 1.102 + is(event.target.result.length, 2, "Correct length"); 1.103 + 1.104 + for (let i in event.target.result) { 1.105 + is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, 1.106 + "Correct key"); 1.107 + } 1.108 + 1.109 + request = objectStore.index("height").mozGetAllKeys(65, 0); 1.110 + request.onerror = errorHandler; 1.111 + request.onsuccess = grabEventAndContinueHandler; 1.112 + event = yield undefined; 1.113 + ok(true, "3"); 1.114 + 1.115 + is(event.target.result instanceof Array, true, "Got an array object"); 1.116 + is(event.target.result.length, 2, "Correct length"); 1.117 + 1.118 + for (let i in event.target.result) { 1.119 + is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, 1.120 + "Correct key"); 1.121 + } 1.122 + 1.123 + request = objectStore.index("height").mozGetAllKeys(65, null); 1.124 + request.onerror = errorHandler; 1.125 + request.onsuccess = grabEventAndContinueHandler; 1.126 + event = yield undefined; 1.127 + ok(true, "3"); 1.128 + 1.129 + is(event.target.result instanceof Array, true, "Got an array object"); 1.130 + is(event.target.result.length, 2, "Correct length"); 1.131 + 1.132 + for (let i in event.target.result) { 1.133 + is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, 1.134 + "Correct key"); 1.135 + } 1.136 + 1.137 + request = objectStore.index("height").mozGetAllKeys(65, undefined); 1.138 + request.onerror = errorHandler; 1.139 + request.onsuccess = grabEventAndContinueHandler; 1.140 + event = yield undefined; 1.141 + ok(true, "3"); 1.142 + 1.143 + is(event.target.result instanceof Array, true, "Got an array object"); 1.144 + is(event.target.result.length, 2, "Correct length"); 1.145 + 1.146 + for (let i in event.target.result) { 1.147 + is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, 1.148 + "Correct key"); 1.149 + } 1.150 + 1.151 + request = objectStore.index("height").mozGetAllKeys(); 1.152 + request.onerror = errorHandler; 1.153 + request.onsuccess = grabEventAndContinueHandler; 1.154 + event = yield undefined; 1.155 + ok(true, "4"); 1.156 + 1.157 + is(event.target.result instanceof Array, true, "Got an array object"); 1.158 + is(event.target.result.length, objectStoreDataHeightSort.length, 1.159 + "Correct length"); 1.160 + 1.161 + for (let i in event.target.result) { 1.162 + is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); 1.163 + } 1.164 + 1.165 + request = objectStore.index("height").mozGetAllKeys(null, 4); 1.166 + request.onerror = errorHandler; 1.167 + request.onsuccess = grabEventAndContinueHandler; 1.168 + event = yield undefined; 1.169 + 1.170 + ok(true, "5"); 1.171 + is(event.target.result instanceof Array, true, "Got an array object"); 1.172 + is(event.target.result.length, 4, "Correct length"); 1.173 + 1.174 + for (let i in event.target.result) { 1.175 + is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); 1.176 + } 1.177 + 1.178 + request = objectStore.index("height").mozGetAllKeys(65, 1); 1.179 + request.onerror = errorHandler; 1.180 + request.onsuccess = grabEventAndContinueHandler; 1.181 + event = yield undefined; 1.182 + 1.183 + ok(true, "6"); 1.184 + is(event.target.result instanceof Array, true, "Got an array object"); 1.185 + is(event.target.result.length, 1, "Correct length"); 1.186 + 1.187 + for (let i in event.target.result) { 1.188 + is(event.target.result[i], objectStoreDataHeightSort[parseInt(i) + 3].key, 1.189 + "Correct key"); 1.190 + } 1.191 + 1.192 + finishTest(); 1.193 + yield undefined; 1.194 +}