tizen beta release
[framework/web/webkit-efl.git] / LayoutTests / storage / indexeddb / cursor-continue.html
1 <html>
2 <head>
3 <script src="../../fast/js/resources/js-test-pre.js"></script>
4 <script src="resources/shared.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9 <script> 
10
11 description("Test IndexedDB's IDBCursor.continue() with a key parameter.");
12 if (window.layoutTestController)
13     layoutTestController.waitUntilDone();
14
15 var date = new Date();
16
17 // In order of how it should be sorted by IndexedDB.
18 window.testData = [
19     0,
20     1,
21     1,
22     3.14159,
23     3.14159,
24     10,
25     11,
26     12,
27     13,
28     date,
29     date,
30     new Date(date.valueOf() + 1000),
31     "A big string",
32     "A big string",
33     "A bit1",
34     "A bit2",
35     "A bit3",
36     "the BIGGEST string"
37 ];
38  
39 function openDatabase()
40 {
41     result = evalAndLog("webkitIndexedDB.open('cursor-continue')");
42     result.onsuccess = setVersion;
43     result.onerror = unexpectedErrorCallback;
44 }
45  
46 function setVersion()
47 {
48     window.db = evalAndLog("db = event.target.result");
49
50     result = evalAndLog("db.setVersion('new version')");
51     result.onsuccess = deleteExisting;
52     result.onerror = unexpectedErrorCallback;
53 }
54
55 function deleteExisting()
56 {
57     window.trans = evalAndLog("trans = event.target.result");
58     shouldBeTrue("trans !== null");
59     trans.onabort = unexpectedAbortCallback;
60
61     deleteAllObjectStores(db);
62
63     window.objectStore = evalAndLog("db.createObjectStore('someObjectStore')");
64     window.indexObject = evalAndLog("objectStore.createIndex('someIndex', 'x')");
65     window.nextToAdd = 0;
66     addData();
67 }
68
69 function addData()
70 {
71     result = evalAndLog("objectStore.add({'x': testData[nextToAdd]}, nextToAdd)");
72     result.onsuccess = ++window.nextToAdd < testData.length ? addData : ascendingTest;
73     result.onerror = unexpectedErrorCallback;
74 }
75
76 function ascendingTest()
77 {
78     debug("");
79     var request = evalAndLog("indexObject.openKeyCursor(null, webkitIDBCursor.NEXT)");
80     request.onsuccess = ascendingCallback;
81     request.onerror = unexpectedErrorCallback;
82     window.stage = 0;
83 }
84
85 function ascendingCallback()
86
87 {
88     if (window.stage == 0) {
89         shouldBe("event.target.result.primaryKey", "0");
90         evalAndLog("event.target.result.continue(3.14159)");
91     } else if (window.stage == 1) {
92         shouldBe("event.target.result.primaryKey", "3");
93         evalAndLog("event.target.result.continue(3.14159)");
94     } else if (window.stage == 2) {
95         shouldBe("event.target.result.primaryKey", "4");
96         evalAndLog("event.target.result.continue(3.14159)");
97     } else if (window.stage == 3) {
98         shouldBe("event.target.result.primaryKey", "5");
99         evalAndLog("event.target.result.continue(12)");
100     } else if (window.stage == 4) {
101         shouldBe("event.target.result.primaryKey", "7");
102         evalAndLog("event.target.result.continue(date)");
103     } else if (window.stage == 5) {
104         shouldBe("event.target.result.primaryKey", "9");
105         evalAndLog("event.target.result.continue(date)");
106     } else if (window.stage == 6) {
107         shouldBe("event.target.result.primaryKey", "10");
108         evalAndLog("event.target.result.continue(date)");
109     } else if (window.stage == 7) {
110         shouldBe("event.target.result.primaryKey", "11");
111         evalAndLog("event.target.result.continue('A bit1')");
112     } else if (window.stage == 8) {
113         shouldBe("event.target.result.primaryKey", "14");
114         evalAndLog("event.target.result.continue('A bit3')");
115     } else if (window.stage == 9) {
116         shouldBe("event.target.result.primaryKey", "16");
117         evalAndLog("event.target.result.continue('the BIGGEST string')");
118     } else if (window.stage == 10) {
119         shouldBe("event.target.result.primaryKey", "17");
120         evalAndLog("event.target.result.continue('the BIGGEST string')");
121     } else if (window.stage == 11) {
122         shouldBeNull("event.target.result");
123         descendingTest();
124         return;
125     } else {
126         testFailed("Illegal stage.");
127     }
128     window.stage++;
129 }
130
131 function descendingTest()
132 {
133     debug("");
134     var request = evalAndLog("indexObject.openKeyCursor(null, webkitIDBCursor.PREV)");
135     request.onsuccess = descendingCallback;
136     request.onerror = unexpectedErrorCallback;
137     window.stage = 0;
138 }
139
140 function descendingCallback()
141 {
142     if (window.stage == 0) {
143         shouldBe("event.target.result.primaryKey", "17");
144         evalAndLog("event.target.result.continue('A bit2')");
145     } else if (window.stage == 1) {
146         shouldBe("event.target.result.primaryKey", "15");
147         evalAndLog("event.target.result.continue('A bit2')");
148     } else if (window.stage == 2) {
149         shouldBe("event.target.result.primaryKey", "14");
150         evalAndLog("event.target.result.continue(date)");
151     } else if (window.stage == 3) {
152         shouldBe("event.target.result.primaryKey", "10");
153         evalAndLog("event.target.result.continue(date)");
154     } else if (window.stage == 4) {
155         shouldBe("event.target.result.primaryKey", "9");
156         evalAndLog("event.target.result.continue(1)");
157     } else if (window.stage == 5) {
158         shouldBe("event.target.result.primaryKey", "2");
159         evalAndLog("event.target.result.continue(1)");
160     } else if (window.stage == 6) {
161         shouldBe("event.target.result.primaryKey", "1");
162         evalAndLog("event.target.result.continue(1)");
163     } else if (window.stage == 7) {
164         shouldBe("event.target.result.primaryKey", "0");
165         evalAndLog("event.target.result.continue(1)");
166     } else if (window.stage == 8) {
167         shouldBeNull("event.target.result");
168         done();
169         return;
170     } else {
171         testFailed("Illegal stage.");
172     }
173     window.stage++;
174 }
175  
176 openDatabase(); // The first step.
177  
178 </script>
179 </body>
180 </html>