80e22d0b5cab6f32f41af696216fab9f4cb03355
[WebKit-https.git] / LayoutTests / storage / indexeddb / modern / resources / date-basic.js
1 description("This tests using Date objects as keys and values.");
2
3 if (window.testRunner) {
4     testRunner.waitUntilDone();
5     testRunner.dumpAsText();
6 }
7
8 function done()
9 {
10     finishJSTest();
11 }
12
13 var createRequest = window.indexedDB.open("DateBasicDatabase", 1);
14 var database;
15
16 var date1 = new Date("1955-11-05T00:00:00");
17 var date2 = new Date("1955-11-12T18:00:00");
18 var date3 = new Date("2015-10-21T16:00:00");
19     
20 createRequest.onupgradeneeded = function(event) {
21     debug("ALERT: " + "Initial upgrade needed: Old version - " + event.oldVersion + " New version - " + event.newVersion);
22
23     var versionTransaction = createRequest.transaction;
24     database = event.target.result;
25     var objectStore = database.createObjectStore("TestObjectStore");
26
27     objectStore.put("Flux capacitor", date1);
28     objectStore.put("Fish under the sea", date2);
29     objectStore.put("Hoverboards", date3);
30     
31     objectStore.put(date1, "a");
32     objectStore.put(date2, "b");
33     objectStore.put(date3, "c");
34     
35     versionTransaction.onabort = function(event) {
36         debug("ALERT: " + "Initial upgrade versionchange transaction unexpected aborted");
37         done();
38     }
39
40     versionTransaction.oncomplete = function(event) {
41         debug("ALERT: " + "Initial upgrade versionchange transaction complete");
42         continueTest1();
43     }
44
45     versionTransaction.onerror = function(event) {
46         debug("ALERT: " + "Initial upgrade versionchange transaction unexpected error" + event);
47         done();
48     }
49 }
50
51 var objectStore;
52
53 function testGet(key) {
54     var request = objectStore.get(key);
55     request.onsuccess = function()
56     {
57         debug("ALERT: " + "Success getting key '" + key + "' of type " + typeof(key) + ", result is '" + request.result + "' of type " + typeof(request.result));
58         if (key instanceof Date)
59             debug("ALERT: " + "Key is a Date object, btw");
60         if (request.result instanceof Date)
61             debug("ALERT: " + "Result is a Date object, btw");
62     }
63     request.onerror = function()
64     {
65         debug("ALERT: " + "Expected error getting key '" + key + "'");
66     }
67 }
68
69 function continueTest1()
70 {
71     var transaction = database.transaction("TestObjectStore", "readonly");
72     objectStore = transaction.objectStore("TestObjectStore");
73     
74     testGet(date1);
75     testGet(date2);
76     testGet(date3);
77     testGet("a");
78     testGet("b");
79     testGet("c");
80     
81     transaction.onabort = function(event) {
82         debug("ALERT: " + "readonly transaction unexpected abort" + event);
83         done();
84     }
85
86     transaction.oncomplete = function(event) {
87         debug("ALERT: " + "readonly transaction complete");
88         done();
89     }
90
91     transaction.onerror = function(event) {
92         debug("ALERT: " + "readonly transaction unexpected error" + event);
93         done();
94     }
95 }