taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit f9df95ded5ba1d6a6edadd24615c5e175ea5bac8
parent b814697fc9e4d55fbdb9b60ff82bef0c0c310494
Author: Florian Dold <florian@dold.me>
Date:   Tue, 16 Feb 2021 16:45:15 +0100

more WPTs

Diffstat:
Rpackages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.ts -> packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts | 0
Apackages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apackages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rpackages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts -> packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts | 0
Rpackages/idb-bridge/src/idb-wpt-ported/idbobjectstore_add.test.ts -> packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts | 0
Rpackages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.ts -> packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts | 0
Mpackages/idb-bridge/src/idb-wpt-ported/wptsupport.ts | 2+-
7 files changed, 140 insertions(+), 1 deletion(-)

diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.ts b/packages/idb-bridge/src/idb-wpt-ported/idbcursor-reused.test.ts diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-cmp.test.ts @@ -0,0 +1,63 @@ +import test from "ava"; +import { createdb, idbFactory } from "./wptsupport"; + +test("WPT idbfactory-cmp*.html", async (t) => { + const indexedDB = idbFactory; + var greater = indexedDB.cmp(2, 1); + var equal = indexedDB.cmp(2, 2); + var less = indexedDB.cmp(1, 2); + + t.deepEqual(greater, 1, "greater"); + t.deepEqual(equal, 0, "equal"); + t.deepEqual(less, -1, "less"); + + t.throws( + () => { + // @ts-expect-error + indexedDB.cmp(); + }, + { instanceOf: TypeError }, + ); + + t.throws( + () => { + indexedDB.cmp(null, null); + }, + { name: "DataError" }, + ); + + t.throws( + () => { + indexedDB.cmp(1, null); + }, + { name: "DataError" }, + ); + + t.throws( + () => { + indexedDB.cmp(null, 1); + }, + { name: "DataError" }, + ); + + t.throws( + () => { + indexedDB.cmp(NaN, NaN); + }, + { name: "DataError" }, + ); + + t.throws( + () => { + indexedDB.cmp(1, NaN); + }, + { name: "DataError" }, + ); + + t.throws( + () => { + indexedDB.cmp(NaN, 1); + }, + { name: "DataError" }, + ); +}); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbfactory-open.test.ts @@ -0,0 +1,76 @@ +import test from "ava"; +import { createdb, idbFactory } from "./wptsupport"; + +// IDBFactory.open() - request has no source +test("WPT idbfactory-open.htm", async (t) => { + await new Promise<void>((resolve, reject) => { + var open_rq = createdb(t, undefined, 9); + + open_rq.onupgradeneeded = function (e) {}; + open_rq.onsuccess = function (e: any) { + t.deepEqual(e.target.source, null, "source"); + resolve(); + }; + }); + t.pass(); +}); + +// IDBFactory.open() - database 'name' and 'version' are correctly set +test("WPT idbfactory-open2.htm", async (t) => { + await new Promise<void>((resolve, reject) => { + var database_name = __filename + "-database_name"; + var open_rq = createdb(t, database_name, 13); + + open_rq.onupgradeneeded = function (e) {}; + open_rq.onsuccess = function (e: any) { + var db = e.target.result; + t.deepEqual(db.name, database_name, "db.name"); + t.deepEqual(db.version, 13, "db.version"); + resolve; + }; + }); + t.pass(); +}); + +// IDBFactory.open() - no version opens current database +test("WPT idbfactory-open3.htm", async (t) => { + const indexedDB = idbFactory; + await new Promise<void>((resolve, reject) => { + var open_rq = createdb(t, undefined, 13); + var did_upgrade = false; + + open_rq.onupgradeneeded = function () {}; + open_rq.onsuccess = function (e: any) { + var db = e.target.result; + db.close(); + + var open_rq2 = indexedDB.open(db.name); + open_rq2.onsuccess = function (e: any) { + t.deepEqual(e.target.result.version, 13, "db.version"); + e.target.result.close(); + resolve(); + }; + open_rq2.onupgradeneeded = () => t.fail("Unexpected upgradeneeded"); + open_rq2.onerror = () => t.fail("Unexpected error"); + }; + }); + t.pass(); +}); + + +// IDBFactory.open() - new database has default version +test("WPT idbfactory-open4.htm", async (t) => { + const indexedDB = idbFactory; + await new Promise<void>((resolve, reject) => { + var open_rq = createdb(t, __filename + '-database_name'); + + open_rq.onupgradeneeded = function(e: any) { + t.deepEqual(e.target.result.version, 1, "db.version"); + }; + open_rq.onsuccess = function(e: any) { + t.deepEqual(e.target.result.version, 1, "db.version"); + resolve(); + }; + }); + t.pass(); +}); diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbindex_get.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbindex-get.test.ts diff --git a/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore_add.test.ts b/packages/idb-bridge/src/idb-wpt-ported/idbobjectstore-add.test.ts diff --git a/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.ts b/packages/idb-bridge/src/idb-wpt-ported/transaction-requestqueue.test.ts diff --git a/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts b/packages/idb-bridge/src/idb-wpt-ported/wptsupport.ts @@ -15,7 +15,7 @@ import { compareKeys } from "../util/cmp"; BridgeIDBFactory.enableTracing = true; const backend = new MemoryBackend(); backend.enableTracing = true; -const idbFactory = new BridgeIDBFactory(backend); +export const idbFactory = new BridgeIDBFactory(backend); const self = { indexedDB: idbFactory,