diff --git a/textproto.ts b/textproto.ts index 4c4b92627b..342d74b33e 100644 --- a/textproto.ts +++ b/textproto.ts @@ -137,10 +137,13 @@ export class TextProtoReader { } } -function append(a: Uint8Array, b: Uint8Array): Uint8Array { +export function append(a: Uint8Array, b: Uint8Array): Uint8Array { if (a == null) { return b; } else { - throw Error("Not implemented"); + const output = new Uint8Array(a.length + b.length); + output.set(a, 0); + output.set(b, a.length); + return output; } } diff --git a/textproto_test.ts b/textproto_test.ts index 57ee99459f..25c12b0e87 100644 --- a/textproto_test.ts +++ b/textproto_test.ts @@ -4,7 +4,7 @@ // license that can be found in the LICENSE file. import { BufReader } from "./bufio.ts"; -import { TextProtoReader } from "./textproto.ts"; +import { TextProtoReader, append } from "./textproto.ts"; import { stringsReader } from "./util.ts"; import { test, @@ -82,3 +82,12 @@ test(async function textprotoReadMIMEHeaderNonCompliant() { } */ }); + +test(async function textprotoAppend() { + const enc = new TextEncoder(); + const dec = new TextDecoder(); + const u1 = enc.encode("Hello "); + const u2 = enc.encode("World"); + const joined = append(u1, u2); + assertEqual(dec.decode(joined), "Hello World"); +});