// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. import { assert, assertEquals, } from "../../../test_util/std/testing/asserts.ts"; import { deferred } from "../../../test_util/std/async/deferred.ts"; import { fromFileUrl, relative } from "../../../test_util/std/path/mod.ts"; import { brotliCompressSync, brotliDecompressSync, createBrotliCompress, createBrotliDecompress, } from "node:zlib"; import { Buffer } from "node:buffer"; import { createReadStream, createWriteStream } from "node:fs"; Deno.test("brotli compression sync", () => { const buf = Buffer.from("hello world"); const compressed = brotliCompressSync(buf); const decompressed = brotliDecompressSync(compressed); assertEquals(decompressed.toString(), "hello world"); }); Deno.test("brotli compression", async () => { const promise = deferred(); const compress = createBrotliCompress(); const filePath = relative( Deno.cwd(), fromFileUrl(new URL("./testdata/lorem_ipsum.txt", import.meta.url)), ); const input = createReadStream(filePath); const output = createWriteStream("lorem_ipsum.txt.br"); const stream = input.pipe(compress).pipe(output); stream.on("finish", () => { const decompress = createBrotliDecompress(); const input2 = createReadStream("lorem_ipsum.txt.br"); const output2 = createWriteStream("lorem_ipsum.txt"); const stream2 = input2.pipe(decompress).pipe(output2); stream2.on("finish", () => { promise.resolve(); }); }); await promise; const content = Deno.readTextFileSync("lorem_ipsum.txt"); assert(content.startsWith("Lorem ipsum dolor sit amet")); try { Deno.removeSync("lorem_ipsum.txt.br"); } catch { // pass } try { Deno.removeSync("lorem_ipsum.txt"); } catch { // pass } });