| description("This tests using Date objects as keys and values."); |
| |
| indexedDBTest(prepareDatabase); |
| |
| |
| function done() |
| { |
| finishJSTest(); |
| } |
| |
| var database; |
| |
| var date1 = new Date("1955-11-05T00:00:00"); |
| var date2 = new Date("1955-11-12T18:00:00"); |
| var date3 = new Date("2015-10-21T16:00:00"); |
| |
| function prepareDatabase(event) |
| { |
| debug("Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion); |
| |
| var versionTransaction = event.target.transaction; |
| database = event.target.result; |
| var objectStore = database.createObjectStore("TestObjectStore"); |
| |
| objectStore.put("Flux capacitor", date1); |
| objectStore.put("Fish under the sea", date2); |
| objectStore.put("Hoverboards", date3); |
| |
| objectStore.put(date1, "a"); |
| objectStore.put(date2, "b"); |
| objectStore.put(date3, "c"); |
| |
| versionTransaction.onabort = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected aborted"); |
| done(); |
| } |
| |
| versionTransaction.oncomplete = function(event) { |
| debug("Initial upgrade versionchange transaction complete"); |
| continueTest1(); |
| } |
| |
| versionTransaction.onerror = function(event) { |
| debug("Initial upgrade versionchange transaction unexpected error" + event); |
| done(); |
| } |
| } |
| |
| var objectStore; |
| |
| function testGet(key) { |
| var request = objectStore.get(key); |
| request.onsuccess = function() |
| { |
| debug("Success getting key '" + key + "' of type " + typeof(key) + ", result is '" + request.result + "' of type " + typeof(request.result)); |
| if (key instanceof Date) |
| debug("Key is a Date object, btw"); |
| if (request.result instanceof Date) |
| debug("Result is a Date object, btw"); |
| } |
| request.onerror = function() |
| { |
| debug("Expected error getting key '" + key + "'"); |
| } |
| } |
| |
| function continueTest1() |
| { |
| var transaction = database.transaction("TestObjectStore", "readonly"); |
| objectStore = transaction.objectStore("TestObjectStore"); |
| |
| testGet(date1); |
| testGet(date2); |
| testGet(date3); |
| testGet("a"); |
| testGet("b"); |
| testGet("c"); |
| |
| transaction.onabort = function(event) { |
| debug("readonly transaction unexpected abort" + event); |
| done(); |
| } |
| |
| transaction.oncomplete = function(event) { |
| debug("readonly transaction complete"); |
| done(); |
| } |
| |
| transaction.onerror = function(event) { |
| debug("readonly transaction unexpected error" + event); |
| done(); |
| } |
| } |