import { assertEquals } from "https://deno.land/std@0.165.0/testing/asserts.ts"; import { AsyncSQLite } from "../../plugos/sqlite/async_sqlite.ts"; import { ensureTable, pageIndexSyscalls } from "./index.ts"; const fakeContext = {} as any; Deno.test("Page index", async () => { const db = new AsyncSQLite(":memory:"); await db.init(); await ensureTable(db); const syscalls = pageIndexSyscalls(db); await syscalls["index.set"](fakeContext, "page1", "key1", "value1"); assertEquals( "value1", await syscalls["index.get"](fakeContext, "page1", "key1"), ); await syscalls["index.set"](fakeContext, "page1", "key1", "value2"); assertEquals( "value2", await syscalls["index.get"](fakeContext, "page1", "key1"), ); await syscalls["index.set"](fakeContext, "page1", "key2", "value1"); assertEquals( [ { key: "key1", page: "page1", value: "value2" }, { key: "key2", page: "page1", value: "value1" }, ], await syscalls["index.queryPrefix"](fakeContext, ""), ); await syscalls["index.delete"](fakeContext, "page1", "key1"); assertEquals( [ { key: "key2", page: "page1", value: "value1" }, ], await syscalls["index.queryPrefix"](fakeContext, ""), ); await syscalls["index.batchSet"](fakeContext, "page1", [ { key: "key1", value: "value1" }, { key: "key2", value: "value2" }, { key: "key3", value: "value3" }, ]); assertEquals( [ { key: "key1", page: "page1", value: "value1" }, { key: "key2", page: "page1", value: "value2" }, { key: "key3", page: "page1", value: "value3" }, ], await syscalls["index.queryPrefix"](fakeContext, ""), ); db.stop(); });