import { DelimiterStream } from "./delimiter_stream.ts";import { testTransformStream } from "./_test_common.ts";
const DELIMITER_STREAM_INPUTS = [ "a", "b", "cCRLF", "CRLF", "qwertzu", "iopasdCRLFmnbvc", "xylkjhCRLFgfdsapCRLFoiuzt", "euoiCRLFCRLFaueiou", "rewq098765432CR", "LF349012i491290", "asdfghjkliopCR", "LFytrewqCRLFmnbvcxz", "CRLFasd", ].map((s) => new TextEncoder().encode(s));
Deno.test("DelimiterStream discard", async () => { const crlf = new TextEncoder().encode("CRLF"); const delimStream = new DelimiterStream(crlf, { disposition: "discard" }); const outputs = [ "abc", "", "qwertzuiopasd", "mnbvcxylkjh", "gfdsap", "oiuzteuoi", "", "aueiourewq098765432", "349012i491290asdfghjkliop", "ytrewq", "mnbvcxz", "asd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, DELIMITER_STREAM_INPUTS, outputs);});
Deno.test("DelimiterStream suffix", async () => { const crlf = new TextEncoder().encode("CRLF"); const delimStream = new DelimiterStream(crlf, { disposition: "suffix" }); const outputs = [ "abcCRLF", "CRLF", "qwertzuiopasdCRLF", "mnbvcxylkjhCRLF", "gfdsapCRLF", "oiuzteuoiCRLF", "CRLF", "aueiourewq098765432CRLF", "349012i491290asdfghjkliopCRLF", "ytrewqCRLF", "mnbvcxzCRLF", "asd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, DELIMITER_STREAM_INPUTS, outputs);});
Deno.test("DelimiterStream prefix", async () => { const crlf = new TextEncoder().encode("CRLF"); const delimStream = new DelimiterStream(crlf, { disposition: "prefix" }); const outputs = [ "abc", "CRLF", "CRLFqwertzuiopasd", "CRLFmnbvcxylkjh", "CRLFgfdsap", "CRLFoiuzteuoi", "CRLF", "CRLFaueiourewq098765432", "CRLF349012i491290asdfghjkliop", "CRLFytrewq", "CRLFmnbvcxz", "CRLFasd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, DELIMITER_STREAM_INPUTS, outputs);});
const CHAR_DELIMITER_STREAM_INPUTS = [ "a", "b", "c_", "_", "qwertzu", "iopasd_mnbvc", "xylkjh_gfdsap_oiuzt", "euoi__aueiou", "rewq098765432", "349012i491290", "asdfghjkliop", "ytrewq_mnbvcxz", "_asd", ].map((s) => new TextEncoder().encode(s));
Deno.test("DelimiterStream char delimiter, discard", async () => { const delim = new TextEncoder().encode("_"); const delimStream = new DelimiterStream(delim, { disposition: "discard" }); const outputs = [ "abc", "", "qwertzuiopasd", "mnbvcxylkjh", "gfdsap", "oiuzteuoi", "", "aueiourewq098765432349012i491290asdfghjkliopytrewq", "mnbvcxz", "asd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, CHAR_DELIMITER_STREAM_INPUTS, outputs);});
Deno.test("DelimiterStream char delimiter, suffix", async () => { const delim = new TextEncoder().encode("_"); const delimStream = new DelimiterStream(delim, { disposition: "suffix" }); const outputs = [ "abc_", "_", "qwertzuiopasd_", "mnbvcxylkjh_", "gfdsap_", "oiuzteuoi_", "_", "aueiourewq098765432349012i491290asdfghjkliopytrewq_", "mnbvcxz_", "asd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, CHAR_DELIMITER_STREAM_INPUTS, outputs);});
Deno.test("DelimiterStream char delimiter, prefix", async () => { const delim = new TextEncoder().encode("_"); const delimStream = new DelimiterStream(delim, { disposition: "prefix" }); const outputs = [ "abc", "_", "_qwertzuiopasd", "_mnbvcxylkjh", "_gfdsap", "_oiuzteuoi", "_", "_aueiourewq098765432349012i491290asdfghjkliopytrewq", "_mnbvcxz", "_asd", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, CHAR_DELIMITER_STREAM_INPUTS, outputs);});
Deno.test("DelimiterStream regression 3609", async () => { const delimStream = new DelimiterStream(new TextEncoder().encode(";")); const inputs = [ ";ab;fg;hn;j", "k;lr;op;rt;;", ].map((s) => new TextEncoder().encode(s)); const outputs = [ "", "ab", "fg", "hn", "jk", "lr", "op", "rt", "", "", ].map((s) => new TextEncoder().encode(s)); await testTransformStream(delimStream, inputs, outputs);});