std/encoding/base64_stream_test.ts
Doctor 0f7a71f96b
feat(encoding/unstable): adds streaming versions for hex, base32, base32hex, base64 and base64url (#4915)
* feat(encoding): adds streaming versions of several encoding methods.

Adds streaming methods for:
- Hex
- Base32
- Base64
- Base64Url

* move(encoding): streaming versions to their own modules.

* fix(encoding): jsdoc examples

* fix(encoding): error when chunk's are smaller than the minimum size.

* add(encoding): Base32Hex Encoder/Decoder Streams

* fix(encoding): mod.ts not exporting ./base32hex_stream.ts

* hex stream

* RandomSliceStream

* polish

* base32

* base64hex

* base64

* base64url

* tweak

* fix

---------

Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com>
2024-08-22 15:02:36 +10:00

34 lines
1.1 KiB
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assertEquals } from "@std/assert";
import { encodeBase64 } from "./base64.ts";
import { Base64DecoderStream, Base64EncoderStream } from "./base64_stream.ts";
import { RandomSliceStream } from "./_random_slice_stream.ts";
import { toText } from "@std/streams/to-text";
import { concat } from "@std/bytes/concat";
Deno.test("Base64EncoderStream() encodes stream", async () => {
const stream = (await Deno.open("./deno.lock"))
.readable
.pipeThrough(new RandomSliceStream())
.pipeThrough(new Base64EncoderStream());
assertEquals(
await toText(stream),
encodeBase64(await Deno.readFile("./deno.lock")),
);
});
Deno.test("Base64DecoderStream() decodes stream", async () => {
const stream = (await Deno.open("./deno.lock"))
.readable
.pipeThrough(new Base64EncoderStream())
.pipeThrough(new RandomSliceStream())
.pipeThrough(new Base64DecoderStream());
assertEquals(
concat(await Array.fromAsync(stream)),
await Deno.readFile("./deno.lock"),
);
});