mirror of
https://github.com/denoland/deno.git
synced 2024-12-30 11:16:38 -05:00
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
|
// 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
|
||
|
}
|
||
|
});
|