Add test for remux
This commit is contained in:
parent
bff4e0d6ed
commit
9c09957775
@ -10,7 +10,7 @@ enum EventSubscription {
|
|||||||
|
|
||||||
const eventsTarget = {
|
const eventsTarget = {
|
||||||
close: EventSubscription.Self,
|
close: EventSubscription.Self,
|
||||||
data: EventSubscription.Self,
|
data: EventSubscription.All,
|
||||||
drain: EventSubscription.Self,
|
drain: EventSubscription.Self,
|
||||||
end: EventSubscription.Self,
|
end: EventSubscription.Self,
|
||||||
error: EventSubscription.Self,
|
error: EventSubscription.Self,
|
||||||
|
@ -5,7 +5,7 @@ import { Writable } from "stream";
|
|||||||
const sinon = require("sinon");
|
const sinon = require("sinon");
|
||||||
const { sleep } = require("../src/helpers");
|
const { sleep } = require("../src/helpers");
|
||||||
import { performance } from "perf_hooks";
|
import { performance } from "perf_hooks";
|
||||||
const { demux, map } = mhysa();
|
const { demux, map } = mhysa({ objectMode: true });
|
||||||
|
|
||||||
interface Test {
|
interface Test {
|
||||||
key: string;
|
key: string;
|
||||||
@ -655,3 +655,47 @@ test("demux() should emit drain event when second stream in pipeline is bottlene
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.cb("Demux should remux to sink", t => {
|
||||||
|
t.plan(6);
|
||||||
|
let i = 0;
|
||||||
|
const input = [
|
||||||
|
{ key: "a", visited: [] },
|
||||||
|
{ key: "b", visited: [] },
|
||||||
|
{ key: "a", visited: [] },
|
||||||
|
{ key: "c", visited: [] },
|
||||||
|
{ key: "a", visited: [] },
|
||||||
|
{ key: "b", visited: [] },
|
||||||
|
];
|
||||||
|
const result = [
|
||||||
|
{ key: "a", visited: ["a"] },
|
||||||
|
{ key: "b", visited: ["b"] },
|
||||||
|
{ key: "a", visited: ["a"] },
|
||||||
|
{ key: "c", visited: ["c"] },
|
||||||
|
{ key: "a", visited: ["a"] },
|
||||||
|
{ key: "b", visited: ["b"] },
|
||||||
|
];
|
||||||
|
const construct = (destKey: string) => {
|
||||||
|
const dest = map((chunk: any) => {
|
||||||
|
chunk.visited.push(destKey);
|
||||||
|
return chunk;
|
||||||
|
});
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
};
|
||||||
|
|
||||||
|
const remux = map(d => {
|
||||||
|
t.deepEqual(d, result[i]);
|
||||||
|
i++;
|
||||||
|
if (i === input.length) {
|
||||||
|
t.end();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const demuxed = demux(construct, "key", {
|
||||||
|
objectMode: true,
|
||||||
|
remultiplex: remux,
|
||||||
|
});
|
||||||
|
|
||||||
|
input.forEach(event => demuxed.write(event));
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user