2024-10-09 14:17:23 +00:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
|
|
|
|
import { assertEquals } from "@std/assert";
|
|
|
|
import { concat } from "@std/bytes";
|
|
|
|
import { random } from "./_common_test.ts";
|
|
|
|
import { encodeCbor } from "./encode_cbor.ts";
|
|
|
|
import { CborTextEncoderStream } from "./text_encoder_stream.ts";
|
|
|
|
|
2024-10-13 02:13:34 +00:00
|
|
|
Deno.test("CborTextEncoderStream() correctly encoding", async () => {
|
|
|
|
const strings = [
|
|
|
|
"a".repeat(random(0, 24)),
|
|
|
|
"a".repeat(random(24, 2 ** 8)),
|
|
|
|
"a".repeat(random(2 ** 8, 2 ** 16)),
|
|
|
|
"a".repeat(random(2 ** 16, 2 ** 17)),
|
|
|
|
];
|
|
|
|
|
|
|
|
const expectedOutput = concat([
|
|
|
|
new Uint8Array([0b011_11111]),
|
|
|
|
...strings.map((x) => encodeCbor(x)),
|
|
|
|
new Uint8Array([0b111_11111]),
|
|
|
|
]);
|
|
|
|
|
|
|
|
const actualOutput = concat(
|
|
|
|
await Array.fromAsync(
|
|
|
|
ReadableStream.from(strings).pipeThrough(new CborTextEncoderStream()),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
assertEquals(actualOutput, expectedOutput);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("CborTextEncoderStream.from() correctly encoding", async () => {
|
|
|
|
const strings = [
|
|
|
|
"a".repeat(random(0, 24)),
|
|
|
|
"a".repeat(random(24, 2 ** 8)),
|
|
|
|
"a".repeat(random(2 ** 8, 2 ** 16)),
|
|
|
|
"a".repeat(random(2 ** 16, 2 ** 17)),
|
|
|
|
];
|
|
|
|
|
|
|
|
const expectedOutput = concat([
|
|
|
|
new Uint8Array([0b011_11111]),
|
|
|
|
...strings.map((x) => encodeCbor(x)),
|
|
|
|
new Uint8Array([0b111_11111]),
|
|
|
|
]);
|
|
|
|
|
|
|
|
const actualOutput = concat(
|
|
|
|
await Array.fromAsync(
|
|
|
|
CborTextEncoderStream.from(strings).readable,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
assertEquals(actualOutput, expectedOutput);
|
|
|
|
});
|