36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { indexedDB } from "https://deno.land/x/indexeddb@v1.1.0/ponyfill_memory.ts";
|
|
import { IndexedDBSpacePrimitives } from "./indexeddb_space_primitives.ts";
|
|
import { assertEquals } from "../../test_deps.ts";
|
|
|
|
Deno.test("IndexedDBSpacePrimitives", async () => {
|
|
const space = new IndexedDBSpacePrimitives("test", indexedDB);
|
|
const files = await space.fetchFileList();
|
|
assertEquals(files, []);
|
|
// Write text file
|
|
const fileMeta = await space.writeFile(
|
|
"test.txt",
|
|
stringToBytes("Hello World"),
|
|
);
|
|
assertEquals(
|
|
(await space.readFile("test.txt")).data,
|
|
stringToBytes("Hello World"),
|
|
);
|
|
const fbContent = (await space.readFile("test.txt"))
|
|
.data;
|
|
assertEquals(new TextDecoder().decode(fbContent), "Hello World");
|
|
assertEquals(await space.fetchFileList(), [fileMeta]);
|
|
const buf = new Uint8Array([1, 2, 3, 4, 5]);
|
|
// Write binary file
|
|
await space.writeFile("test.bin", buf);
|
|
const fMeta = await space.getFileMeta("test.bin");
|
|
assertEquals(fMeta.size, 5);
|
|
assertEquals((await space.fetchFileList()).length, 2);
|
|
|
|
await space.deleteFile("test.bin");
|
|
assertEquals(await space.fetchFileList(), [fileMeta]);
|
|
});
|
|
|
|
function stringToBytes(str: string): Uint8Array {
|
|
return new TextEncoder().encode(str);
|
|
}
|