import { describe, it, expect } from "vitest"; import { sha256 } from "./sha256"; const smallContent = "hello world"; const smallContentSHA256 = "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"; const bigContent = "O123456789".repeat(100_000); const bigContentSHA256 = "a3bbce7ee1df7233d85b5f4d60faa3755f93f537804f8b540c72b0739239ddf8"; const biggerContent = "0123456789".repeat(1_000_000); const biggerContentSHA256 = "d52fcc26b48dbd4d79b125eb0a29b803ade07613c67ac7c6f2751aefef008486"; describe("sha256", () => { async function calcSHA256(content: string, useWebWorker: boolean) { const iterator = sha256(new Blob([content]), { useWebWorker }); let res: IteratorResult; do { res = await iterator.next(); } while (!res.done); return res.value; } it("Calculate hash of a small file", async () => { const sha = await calcSHA256(smallContent, false); expect(sha).toBe(smallContentSHA256); }); it("Calculate hash of a big file", async () => { const sha = await calcSHA256(bigContent, false); expect(sha).toBe(bigContentSHA256); }); it("Calculate hash of a bigger file", async () => { const sha = await calcSHA256(biggerContent, false); expect(sha).toBe(biggerContentSHA256); }); it("Calculate hash of a small file (+ web worker)", async () => { const sha = await calcSHA256(smallContent, true); expect(sha).toBe(smallContentSHA256); }); it("Calculate hash of a big file (+ web worker)", async () => { const sha = await calcSHA256(bigContent, true); expect(sha).toBe(bigContentSHA256); }); it("Calculate hash of a bigger file (+ web worker)", async () => { const sha = await calcSHA256(biggerContent, true); expect(sha).toBe(biggerContentSHA256); }); });