| description("This test exercises the \"unique\" constraint of indexes."); |
| |
| indexedDBTest(prepareDatabase); |
| |
| |
| function done() |
| { |
| finishJSTest(); |
| } |
| |
| function log(message) |
| { |
| debug(message); |
| } |
| |
| var objectStore; |
| |
| function checkObjectStore() |
| { |
| var req1 = objectStore.get(1); |
| req1.onsuccess = function() { |
| debug("Value of 1 is: " + req1.result); |
| } |
| var req2 = objectStore.get(2); |
| req2.onsuccess = function() { |
| debug("Value of 2 is: " + req2.result); |
| } |
| var req3 = objectStore.get(3); |
| req3.onsuccess = function() { |
| debug("Value of 3 is: " + req3.result); |
| } |
| } |
| |
| function checkIndex(index, name) |
| { |
| var req = index.count(); |
| req.onsuccess = function() { |
| debug("Count in index " + name + " is: " + req.result); |
| } |
| } |
| |
| function prepareDatabase(event) |
| { |
| debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion); |
| |
| var versionTransaction = event.target.transaction; |
| var database = event.target.result; |
| objectStore = database.createObjectStore("TestObjectStore"); |
| var i1 = objectStore.createIndex("TestIndex1", "bar", { unique: true }); |
| var i2 = objectStore.createIndex("TestIndex2", "bar", { multiEntry: true, unique: true }); |
| |
| var request1 = objectStore.put({ bar: "good", baz: "bad" }, 1); |
| request1.onsuccess = function() { |
| debug("First put success"); |
| } |
| request1.onerror = function() { |
| debug("First put unexpected failure"); |
| done(); |
| } |
| |
| checkObjectStore(); |
| checkIndex(i1, 1); |
| checkIndex(i2, 2); |
| |
| var request2 = objectStore.put({ bar: "good", baz: "bad" }, 2); |
| request2.onsuccess = function() { |
| debug("Second put unexpected success"); |
| done(); |
| } |
| request2.onerror = function(e) { |
| debug("Second put failure"); |
| e.stopPropagation(); |
| e.preventDefault(); |
| } |
| |
| checkObjectStore(); |
| checkIndex(i1, 1); |
| checkIndex(i2, 2); |
| |
| var request3 = objectStore.put({ bar: [ "gnarly", "great", "good" ]}, 3); |
| request3.onsuccess = function() { |
| debug("Third put unexpected success"); |
| done(); |
| } |
| request3.onerror = function(e) { |
| debug("Third put failure"); |
| e.stopPropagation(); |
| e.preventDefault(); |
| } |
| |
| checkObjectStore(); |
| checkIndex(i1, 1); |
| checkIndex(i2, 2); |
| |
| versionTransaction.onabort = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected aborted"); |
| done(); |
| } |
| |
| versionTransaction.oncomplete = function(event) { |
| debug("Initial upgrade versionchange transaction complete"); |
| done(); |
| } |
| |
| versionTransaction.onerror = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| |