70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBCursor.direction
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
function cursor_direction(constant, dir) {
|
|
let db;
|
|
let t = async_test('IDBCursor.direction - ' + dir);
|
|
let expected = dir ? dir : 'next';
|
|
|
|
let open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = function(e) {
|
|
db = e.target.result;
|
|
t.add_cleanup(function() {
|
|
db.close();
|
|
indexedDB.deleteDatabase(db.name);
|
|
});
|
|
|
|
let objStore = db.createObjectStore('test');
|
|
|
|
objStore.add('data', 'key');
|
|
};
|
|
|
|
open_rq.onsuccess = t.step_func(function(e) {
|
|
let cursor_rq;
|
|
let count = 0;
|
|
let os = db.transaction('test', 'readonly').objectStore('test');
|
|
if (dir)
|
|
cursor_rq = os.openCursor(undefined, dir);
|
|
else
|
|
cursor_rq = os.openCursor();
|
|
|
|
cursor_rq.onsuccess = t.step_func(function(e) {
|
|
let cursor = e.target.result;
|
|
|
|
assert_equals(cursor.direction, constant, 'direction constant');
|
|
assert_equals(cursor.direction, expected, 'direction');
|
|
assert_readonly(cursor, 'direction');
|
|
|
|
count++;
|
|
if (count >= 2)
|
|
t.done();
|
|
});
|
|
|
|
let cursor_rq2 = db.transaction('test', 'readonly')
|
|
.objectStore('test')
|
|
.openCursor(undefined, constant);
|
|
|
|
cursor_rq2.onsuccess = t.step_func(function(e) {
|
|
let cursor = e.target.result;
|
|
|
|
assert_equals(
|
|
cursor.direction, constant, 'direction constant (second try)');
|
|
assert_equals(cursor.direction, expected, 'direction (second try)');
|
|
assert_readonly(cursor, 'direction');
|
|
|
|
count++;
|
|
if (count >= 2)
|
|
t.done();
|
|
});
|
|
});
|
|
}
|
|
|
|
cursor_direction('next');
|
|
cursor_direction('next', 'next');
|
|
cursor_direction('prev', 'prev');
|
|
cursor_direction('nextunique', 'nextunique');
|
|
cursor_direction('prevunique', 'prevunique');
|