87 lines
3.5 KiB
JavaScript
87 lines
3.5 KiB
JavaScript
// META: title=IndexedDB
|
|
// META: global=window,worker
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
async_test(t => {
|
|
let db;
|
|
let trans;
|
|
let store;
|
|
let index;
|
|
let request = createdb(t);
|
|
|
|
request.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
store = db.createObjectStore('store');
|
|
index = store.createIndex('index', 'value');
|
|
store.put({value: 0}, 0);
|
|
trans = request.transaction;
|
|
trans.oncomplete = verifyOverloads;
|
|
};
|
|
|
|
function verifyOverloads() {
|
|
trans = db.transaction('store', 'readonly');
|
|
store = trans.objectStore('store');
|
|
index = store.index('index');
|
|
|
|
checkCursorDirection(store.openCursor(), 'next');
|
|
checkCursorDirection(store.openCursor(0), 'next');
|
|
checkCursorDirection(store.openCursor(0, 'next'), 'next');
|
|
checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique');
|
|
checkCursorDirection(store.openCursor(0, 'prev'), 'prev');
|
|
checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique');
|
|
|
|
checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next');
|
|
checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next');
|
|
checkCursorDirection(
|
|
store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
|
|
checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
|
|
checkCursorDirection(
|
|
store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
|
|
|
|
checkCursorDirection(index.openCursor(), 'next');
|
|
checkCursorDirection(index.openCursor(0), 'next');
|
|
checkCursorDirection(index.openCursor(0, 'next'), 'next');
|
|
checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique');
|
|
checkCursorDirection(index.openCursor(0, 'prev'), 'prev');
|
|
checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique');
|
|
|
|
checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next');
|
|
checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next');
|
|
checkCursorDirection(
|
|
index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
|
|
checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev');
|
|
checkCursorDirection(
|
|
index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
|
|
|
|
checkCursorDirection(index.openKeyCursor(), 'next');
|
|
checkCursorDirection(index.openKeyCursor(0), 'next');
|
|
checkCursorDirection(index.openKeyCursor(0, 'next'), 'next');
|
|
checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique');
|
|
checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev');
|
|
checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique');
|
|
|
|
checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next');
|
|
checkCursorDirection(
|
|
index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next');
|
|
checkCursorDirection(
|
|
index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique');
|
|
checkCursorDirection(
|
|
index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev');
|
|
checkCursorDirection(
|
|
index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique');
|
|
|
|
t.done();
|
|
}
|
|
|
|
function checkCursorDirection(request, direction) {
|
|
request.onsuccess = function(event) {
|
|
assert_not_equals(
|
|
event.target.result, null, 'Check the result is not null')
|
|
assert_equals(
|
|
event.target.result.direction, direction,
|
|
'Check the result direction');
|
|
};
|
|
}
|
|
}, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()');
|