63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBCursor.source
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
function cursor_source_test(
|
|
test_name, name, stringified_object, cursor_rq_func) {
|
|
indexeddb_test(
|
|
function(t, db, tx) {
|
|
const objStore = db.createObjectStore('my_objectstore');
|
|
objStore.createIndex('my_index', '');
|
|
|
|
objStore.add('data', 1);
|
|
objStore.add('data2', 2);
|
|
},
|
|
function(t, db) {
|
|
const cursor_rq = cursor_rq_func(db);
|
|
|
|
cursor_rq.onsuccess = t.step_func((e) => {
|
|
if (!e.target.result) {
|
|
return;
|
|
}
|
|
const cursor = e.target.result;
|
|
assert_readonly(cursor, 'source');
|
|
|
|
// Direct try
|
|
assert_true(cursor.source instanceof Object, 'source isobject');
|
|
assert_equals(cursor.source + '', stringified_object, 'source');
|
|
assert_equals(cursor.source.name, name, 'name');
|
|
|
|
cursor.continue();
|
|
});
|
|
|
|
cursor_rq.transaction.oncomplete = t.step_func((e) => {
|
|
t.done();
|
|
});
|
|
|
|
cursor_rq.transaction.onerror = t.step_func((e) => {
|
|
assert_unreached(
|
|
'Transaction got error. ' +
|
|
(e.target.error ? e.target.error.name : 'unknown'));
|
|
});
|
|
},
|
|
test_name);
|
|
}
|
|
|
|
cursor_source_test(
|
|
'IDBCursor.source - IDBObjectStore', 'my_objectstore',
|
|
'[object IDBObjectStore]', function(db) {
|
|
return db.transaction('my_objectstore', 'readonly')
|
|
.objectStore('my_objectstore')
|
|
.openCursor();
|
|
});
|
|
|
|
cursor_source_test(
|
|
'IDBCursor.source - IDBIndex', 'my_index', '[object IDBIndex]',
|
|
function(db) {
|
|
return db.transaction('my_objectstore', 'readonly')
|
|
.objectStore('my_objectstore')
|
|
.index('my_index')
|
|
.openCursor();
|
|
});
|