From 9042fcc12e7774cdd0ca3a5d08918a07dae8102b Mon Sep 17 00:00:00 2001 From: Steven Guerrero Date: Thu, 26 Nov 2020 07:50:08 -0500 Subject: feat(std/node/stream): Add Duplex, Transform, Passthrough, pipeline, finished and promises (#7940) --- std/node/_stream/transform_test.ts | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 std/node/_stream/transform_test.ts (limited to 'std/node/_stream/transform_test.ts') diff --git a/std/node/_stream/transform_test.ts b/std/node/_stream/transform_test.ts new file mode 100644 index 000000000..d3b90ff01 --- /dev/null +++ b/std/node/_stream/transform_test.ts @@ -0,0 +1,68 @@ +// Copyright Node.js contributors. All rights reserved. MIT License. +import { Buffer } from "../buffer.ts"; +import Transform from "./transform.ts"; +import finished from "./end_of_stream.ts"; +import { deferred } from "../../async/mod.ts"; +import { assert, assertEquals } from "../../testing/asserts.ts"; + +Deno.test("Transform stream finishes correctly", async () => { + let finishedExecuted = 0; + const finishedExecutedExpected = 1; + const finishedExecution = deferred(); + + const tr = new Transform({ + transform(_data, _enc, cb) { + cb(); + }, + }); + + let finish = false; + let ended = false; + + tr.on("end", () => { + ended = true; + }); + + tr.on("finish", () => { + finish = true; + }); + + finished(tr, (err) => { + finishedExecuted++; + if (finishedExecuted === finishedExecutedExpected) { + finishedExecution.resolve(); + } + assert(!err, "no error"); + assert(finish); + assert(ended); + }); + + tr.end(); + tr.resume(); + + const finishedTimeout = setTimeout( + () => finishedExecution.reject(), + 1000, + ); + await finishedExecution; + clearTimeout(finishedTimeout); + assertEquals(finishedExecuted, finishedExecutedExpected); +}); + +Deno.test("Transform stream flushes data correctly", () => { + const expected = "asdf"; + + const t = new Transform({ + transform: (_d, _e, n) => { + n(); + }, + flush: (n) => { + n(null, expected); + }, + }); + + t.end(Buffer.from("blerg")); + t.on("data", (data) => { + assertEquals(data.toString(), expected); + }); +}); -- cgit v1.2.3