diff options
Diffstat (limited to 'packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts')
-rw-r--r-- | packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts new file mode 100644 index 000000000..2f1797a6f --- /dev/null +++ b/packages/idb-bridge/src/idb-wpt-ported/cursor-overloads.test.ts @@ -0,0 +1,114 @@ +import test from "ava"; +import { BridgeIDBCursor } from ".."; +import { BridgeIDBCursorWithValue } from "../bridge-idb"; +import { createdb } from "./wptsupport"; + +// Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor() +test.cb("WPT test cursor-overloads.htm", (t) => { + var db: any, trans: any, store: any, index: any; + + var request = createdb(t); + request.onupgradeneeded = function (e) { + db = request.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"); + 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.end(); + } + + function checkCursorDirection(statement: string, direction: string) { + request = eval(statement); + request.onsuccess = function (event: any) { + t.notDeepEqual(event.target.result, null, "Check the result is not null"); + t.deepEqual( + event.target.result.direction, + direction, + "Check the result direction", + ); + }; + } +}); |