test-readWrite.mjs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. 'use strict';
  2. import test from 'tape-six';
  3. import {streamToArray} from './helpers.mjs';
  4. import chain, {dataSource} from '../src/index.js';
  5. import fromIterable from '../src/utils/readableFrom.js';
  6. test.asPromise('readWrite: readable', (t, resolve) => {
  7. const output1 = [],
  8. output2 = [],
  9. c = chain([fromIterable([1, 2, 3]), x => x * x]);
  10. c.pipe(streamToArray(output1));
  11. c.on('data', value => output2.push(value));
  12. c.on('end', () => {
  13. t.deepEqual(output1, [1, 4, 9]);
  14. t.deepEqual(output2, [1, 4, 9]);
  15. resolve();
  16. });
  17. });
  18. test.asPromise('readWrite: writable', (t, resolve) => {
  19. const output = [],
  20. c = chain([x => x * x, streamToArray(output)]);
  21. fromIterable([1, 2, 3]).pipe(c);
  22. c.on('end', () => {
  23. t.deepEqual(output, [1, 4, 9]);
  24. resolve();
  25. });
  26. });
  27. test.asPromise('readWrite: readable and writable', (t, resolve) => {
  28. const output = [],
  29. c = chain([fromIterable([1, 2, 3]), x => x * x, streamToArray(output)]);
  30. c.on('end', () => {
  31. t.deepEqual(output, [1, 4, 9]);
  32. resolve();
  33. });
  34. });
  35. test.asPromise('readWrite: single readable', (t, resolve) => {
  36. const output1 = [],
  37. output2 = [],
  38. c = chain([fromIterable([1, 2, 3])]);
  39. c.pipe(streamToArray(output1));
  40. c.on('data', value => output2.push(value));
  41. c.on('end', () => {
  42. t.deepEqual(output1, [1, 2, 3]);
  43. t.deepEqual(output2, [1, 2, 3]);
  44. resolve();
  45. });
  46. });
  47. test.asPromise('readWrite: single writable', (t, resolve) => {
  48. const output = [],
  49. c = chain([streamToArray(output)]);
  50. fromIterable([1, 2, 3]).pipe(c);
  51. c.on('end', () => {
  52. t.deepEqual(output, [1, 2, 3]);
  53. resolve();
  54. });
  55. });
  56. test.asPromise('readWrite: pipeable', (t, resolve, reject) => {
  57. const output1 = [],
  58. output2 = [],
  59. c = chain([dataSource([1, 2, 3]), streamToArray(output1)]);
  60. fromIterable([4, 5, 6]).pipe(c).pipe(streamToArray(output2));
  61. c.on('end', () => {
  62. t.deepEqual(output1, [1, 2, 3, 1, 2, 3, 1, 2, 3]);
  63. t.deepEqual(output2, []);
  64. resolve();
  65. });
  66. c.on('error', error => reject(error));
  67. });