|
@@ -0,0 +1,98 @@
|
|
|
|
|
+'use strict';
|
|
|
|
|
+
|
|
|
|
|
+import test from 'tape-six';
|
|
|
|
|
+
|
|
|
|
|
+import {streamToArray, delay} from './helpers.mjs';
|
|
|
|
|
+import chain, {dataSource} from '../src/index.js';
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: smoke test', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([dataSource([1, 2, 3]), streamToArray(output)]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [1, 2, 3]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: function', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([dataSource(() => 0), streamToArray(output)]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [0]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: async function', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([dataSource(delay(() => 0)), streamToArray(output)]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [0]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: generator', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([
|
|
|
|
|
+ dataSource(function* () {
|
|
|
|
|
+ yield 0;
|
|
|
|
|
+ yield 1;
|
|
|
|
|
+ }),
|
|
|
|
|
+ streamToArray(output)
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [0, 1]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: async generator', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([
|
|
|
|
|
+ dataSource(async function* () {
|
|
|
|
|
+ yield delay(() => 0)();
|
|
|
|
|
+ yield delay(() => 1)();
|
|
|
|
|
+ }),
|
|
|
|
|
+ streamToArray(output)
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [0, 1]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+test.asPromise('dataSource: nextable', (t, resolve) => {
|
|
|
|
|
+ const output = [],
|
|
|
|
|
+ c = chain([
|
|
|
|
|
+ dataSource(
|
|
|
|
|
+ (function* () {
|
|
|
|
|
+ yield 0;
|
|
|
|
|
+ yield 1;
|
|
|
|
|
+ })()
|
|
|
|
|
+ ),
|
|
|
|
|
+ streamToArray(output)
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ c.on('end', () => {
|
|
|
|
|
+ t.deepEqual(output, [0, 1]);
|
|
|
|
|
+ resolve();
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ c.end(1); // start the chain
|
|
|
|
|
+});
|