mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 23:38:38 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,139 @@
|
|||
<!DOCTYPE html>
|
||||
<title>IDBObjectStore.openKeyCursor()</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
function store_test(func, name) {
|
||||
async_test(function(t) {
|
||||
var del = indexedDB.deleteDatabase(name);
|
||||
del.onerror = t.unreached_func("deleteDatabase failed");
|
||||
var open = indexedDB.open(name);
|
||||
open.onupgradeneeded = t.step_func(function() {
|
||||
var db = open.result;
|
||||
var store = db.createObjectStore("store");
|
||||
for (var i = 0; i < 10; ++i) {
|
||||
store.put("value: " + i, i);
|
||||
}
|
||||
});
|
||||
|
||||
open.onsuccess = t.step_func(function() {
|
||||
var db = open.result;
|
||||
var tx = db.transaction("store");
|
||||
var store = tx.objectStore("store");
|
||||
func(t, db, tx, store);
|
||||
});
|
||||
}, name);
|
||||
}
|
||||
|
||||
store_test(function(t, db, tx, store) {
|
||||
var expected = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
||||
var actual = [];
|
||||
var request = store.openKeyCursor();
|
||||
request.onsuccess = t.step_func(function() {
|
||||
var cursor = request.result;
|
||||
if (!cursor)
|
||||
return;
|
||||
assert_equals(cursor.direction, "next");
|
||||
assert_false("value" in cursor);
|
||||
assert_equals(indexedDB.cmp(cursor.key, cursor.primaryKey), 0);
|
||||
actual.push(cursor.key);
|
||||
cursor.continue();
|
||||
});
|
||||
|
||||
tx.onabort = t.unreached_func("transaction aborted");
|
||||
tx.oncomplete = t.step_func(function() {
|
||||
assert_array_equals(expected, actual, "keys should match");
|
||||
t.done();
|
||||
});
|
||||
|
||||
}, "IDBObjectStore.openKeyCursor() - forward iteration");
|
||||
|
||||
store_test(function(t, db, tx, store) {
|
||||
var expected = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
|
||||
var actual = [];
|
||||
var request = store.openKeyCursor(null, "prev");
|
||||
request.onsuccess = t.step_func(function() {
|
||||
var cursor = request.result;
|
||||
if (!cursor)
|
||||
return;
|
||||
assert_equals(cursor.direction, "prev");
|
||||
assert_false("value" in cursor);
|
||||
assert_equals(indexedDB.cmp(cursor.key, cursor.primaryKey), 0);
|
||||
actual.push(cursor.key);
|
||||
cursor.continue();
|
||||
});
|
||||
|
||||
tx.onabort = t.unreached_func("transaction aborted");
|
||||
tx.oncomplete = t.step_func(function() {
|
||||
assert_array_equals(expected, actual, "keys should match");
|
||||
t.done();
|
||||
});
|
||||
|
||||
}, "IDBObjectStore.openKeyCursor() - reverse iteration");
|
||||
|
||||
store_test(function(t, db, tx, store) {
|
||||
var expected = [4, 5, 6];
|
||||
var actual = [];
|
||||
var request = store.openKeyCursor(IDBKeyRange.bound(4, 6));
|
||||
request.onsuccess = t.step_func(function() {
|
||||
var cursor = request.result;
|
||||
if (!cursor)
|
||||
return;
|
||||
assert_equals(cursor.direction, "next");
|
||||
assert_false("value" in cursor);
|
||||
assert_equals(indexedDB.cmp(cursor.key, cursor.primaryKey), 0);
|
||||
actual.push(cursor.key);
|
||||
cursor.continue();
|
||||
});
|
||||
|
||||
tx.onabort = t.unreached_func("transaction aborted");
|
||||
tx.oncomplete = t.step_func(function() {
|
||||
assert_array_equals(expected, actual, "keys should match");
|
||||
t.done();
|
||||
});
|
||||
|
||||
}, "IDBObjectStore.openKeyCursor() - forward iteration with range");
|
||||
|
||||
store_test(function(t, db, tx, store) {
|
||||
var expected = [6, 5, 4];
|
||||
var actual = [];
|
||||
var request = store.openKeyCursor(IDBKeyRange.bound(4, 6), "prev");
|
||||
request.onsuccess = t.step_func(function() {
|
||||
var cursor = request.result;
|
||||
if (!cursor)
|
||||
return;
|
||||
assert_equals(cursor.direction, "prev");
|
||||
assert_false("value" in cursor);
|
||||
assert_equals(indexedDB.cmp(cursor.key, cursor.primaryKey), 0);
|
||||
actual.push(cursor.key);
|
||||
cursor.continue();
|
||||
});
|
||||
|
||||
tx.onabort = t.unreached_func("transaction aborted");
|
||||
tx.oncomplete = t.step_func(function() {
|
||||
assert_array_equals(expected, actual, "keys should match");
|
||||
t.done();
|
||||
});
|
||||
|
||||
}, "IDBObjectStore.openKeyCursor() - reverse iteration with range");
|
||||
|
||||
store_test(function(t, db, tx, store) {
|
||||
assert_throws("DataError", function() { store.openKeyCursor(NaN); },
|
||||
"openKeyCursor should throw on invalid number key");
|
||||
assert_throws("DataError", function() { store.openKeyCursor(new Date(NaN)); },
|
||||
"openKeyCursor should throw on invalid date key");
|
||||
assert_throws("DataError", function() {
|
||||
var cycle = [];
|
||||
cycle.push(cycle);
|
||||
store.openKeyCursor(cycle);
|
||||
}, "openKeyCursor should throw on invalid array key");
|
||||
assert_throws("DataError", function() { store.openKeyCursor({}); },
|
||||
"openKeyCursor should throw on invalid key type");
|
||||
setTimeout(t.step_func(function() {
|
||||
assert_throws("TransactionInactiveError", function() { store.openKeyCursor(); },
|
||||
"openKeyCursor should throw if transaction is inactive");
|
||||
t.done();
|
||||
}), 0);
|
||||
|
||||
}, "IDBObjectStore.openKeyCursor() - invalid inputs");
|
||||
</script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue