test_locale_aware_index_getAll.js (6189B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const name = this.window ? window.location.pathname : "Splendid Test"; 11 const objectStoreName = "People"; 12 13 const objectStoreData = [ 14 { 15 key: "237-23-7732", 16 value: { name: "\u00E1na", height: 60, weight: 120 }, 17 }, 18 { key: "237-23-7733", value: { name: "ana", height: 52, weight: 110 } }, 19 { key: "237-23-7734", value: { name: "fabio", height: 73, weight: 180 } }, 20 { 21 key: "237-23-7735", 22 value: { name: "\u00F3scar", height: 58, weight: 130 }, 23 }, 24 { key: "237-23-7736", value: { name: "bob", height: 65, weight: 150 } }, 25 { key: "237-23-7737", value: { name: "\u00E9ason", height: 65 } }, 26 ]; 27 28 const indexData = [ 29 { name: "name", keyPath: "name", options: { unique: true, locale: true } }, 30 { 31 name: "height", 32 keyPath: "height", 33 options: { unique: false, locale: true }, 34 }, 35 { 36 name: "weight", 37 keyPath: "weight", 38 options: { unique: false, locale: true }, 39 }, 40 ]; 41 42 const objectStoreDataHeightSort = [ 43 { key: "237-23-7733", value: { name: "ana", height: 52, weight: 110 } }, 44 { 45 key: "237-23-7735", 46 value: { name: "\u00F3scar", height: 58, weight: 130 }, 47 }, 48 { 49 key: "237-23-7732", 50 value: { name: "\u00E1na", height: 60, weight: 120 }, 51 }, 52 { key: "237-23-7736", value: { name: "bob", height: 65, weight: 150 } }, 53 { key: "237-23-7737", value: { name: "\u00E9ason", height: 65 } }, 54 { key: "237-23-7734", value: { name: "fabio", height: 73, weight: 180 } }, 55 ]; 56 57 let request = indexedDB.open(name, 1); 58 request.onerror = errorHandler; 59 request.onupgradeneeded = grabEventAndContinueHandler; 60 request.onsuccess = grabEventAndContinueHandler; 61 let event = yield undefined; 62 63 let db = event.target.result; 64 65 let objectStore = db.createObjectStore(objectStoreName); 66 67 // First, add all our data to the object store. 68 let addedData = 0; 69 for (let i in objectStoreData) { 70 request = objectStore.add(objectStoreData[i].value, objectStoreData[i].key); 71 request.onerror = errorHandler; 72 request.onsuccess = function (event) { 73 if (++addedData == objectStoreData.length) { 74 testGenerator.next(event); 75 } 76 }; 77 } 78 yield undefined; 79 ok(true, "1"); 80 81 // Now create the indexes. 82 for (let i in indexData) { 83 objectStore.createIndex( 84 indexData[i].name, 85 indexData[i].keyPath, 86 indexData[i].options 87 ); 88 } 89 90 is(objectStore.indexNames.length, indexData.length, "Good index count"); 91 yield undefined; 92 93 ok(true, "2"); 94 objectStore = db.transaction(objectStoreName).objectStore(objectStoreName); 95 96 request = objectStore.index("height").mozGetAllKeys(65); 97 request.onerror = errorHandler; 98 request.onsuccess = grabEventAndContinueHandler; 99 event = yield undefined; 100 ok(true, "3"); 101 102 is(event.target.result instanceof Array, true, "Got an array object"); 103 is(event.target.result.length, 2, "Correct length"); 104 105 for (let i in event.target.result) { 106 is( 107 event.target.result[i], 108 objectStoreDataHeightSort[parseInt(i) + 3].key, 109 "Correct key" 110 ); 111 } 112 113 request = objectStore.index("height").mozGetAllKeys(65, 0); 114 request.onerror = errorHandler; 115 request.onsuccess = grabEventAndContinueHandler; 116 event = yield undefined; 117 ok(true, "3"); 118 119 is(event.target.result instanceof Array, true, "Got an array object"); 120 is(event.target.result.length, 2, "Correct length"); 121 122 for (let i in event.target.result) { 123 is( 124 event.target.result[i], 125 objectStoreDataHeightSort[parseInt(i) + 3].key, 126 "Correct key" 127 ); 128 } 129 130 request = objectStore.index("height").mozGetAllKeys(65, null); 131 request.onerror = errorHandler; 132 request.onsuccess = grabEventAndContinueHandler; 133 event = yield undefined; 134 ok(true, "3"); 135 136 is(event.target.result instanceof Array, true, "Got an array object"); 137 is(event.target.result.length, 2, "Correct length"); 138 139 for (let i in event.target.result) { 140 is( 141 event.target.result[i], 142 objectStoreDataHeightSort[parseInt(i) + 3].key, 143 "Correct key" 144 ); 145 } 146 147 request = objectStore.index("height").mozGetAllKeys(65, undefined); 148 request.onerror = errorHandler; 149 request.onsuccess = grabEventAndContinueHandler; 150 event = yield undefined; 151 ok(true, "3"); 152 153 is(event.target.result instanceof Array, true, "Got an array object"); 154 is(event.target.result.length, 2, "Correct length"); 155 156 for (let i in event.target.result) { 157 is( 158 event.target.result[i], 159 objectStoreDataHeightSort[parseInt(i) + 3].key, 160 "Correct key" 161 ); 162 } 163 164 request = objectStore.index("height").mozGetAllKeys(); 165 request.onerror = errorHandler; 166 request.onsuccess = grabEventAndContinueHandler; 167 event = yield undefined; 168 ok(true, "4"); 169 170 is(event.target.result instanceof Array, true, "Got an array object"); 171 is( 172 event.target.result.length, 173 objectStoreDataHeightSort.length, 174 "Correct length" 175 ); 176 177 for (let i in event.target.result) { 178 is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); 179 } 180 181 request = objectStore.index("height").mozGetAllKeys(null, 4); 182 request.onerror = errorHandler; 183 request.onsuccess = grabEventAndContinueHandler; 184 event = yield undefined; 185 186 ok(true, "5"); 187 is(event.target.result instanceof Array, true, "Got an array object"); 188 is(event.target.result.length, 4, "Correct length"); 189 190 for (let i in event.target.result) { 191 is(event.target.result[i], objectStoreDataHeightSort[i].key, "Correct key"); 192 } 193 194 request = objectStore.index("height").mozGetAllKeys(65, 1); 195 request.onerror = errorHandler; 196 request.onsuccess = grabEventAndContinueHandler; 197 event = yield undefined; 198 199 ok(true, "6"); 200 is(event.target.result instanceof Array, true, "Got an array object"); 201 is(event.target.result.length, 1, "Correct length"); 202 203 for (let i in event.target.result) { 204 is( 205 event.target.result[i], 206 objectStoreDataHeightSort[parseInt(i) + 3].key, 207 "Correct key" 208 ); 209 } 210 211 finishTest(); 212 }