test-dataSource.mjs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. 'use strict';
  2. import test from 'tape-six';
  3. import {streamToArray, delay} from './helpers.mjs';
  4. import chain, {dataSource} from '../src/index.js';
  5. test.asPromise('dataSource: smoke test', (t, resolve) => {
  6. const output = [],
  7. c = chain([dataSource([1, 2, 3]), streamToArray(output)]);
  8. c.on('end', () => {
  9. t.deepEqual(output, [1, 2, 3]);
  10. resolve();
  11. });
  12. c.end(1); // start the chain
  13. });
  14. test.asPromise('dataSource: function', (t, resolve) => {
  15. const output = [],
  16. c = chain([dataSource(() => 0), streamToArray(output)]);
  17. c.on('end', () => {
  18. t.deepEqual(output, [0]);
  19. resolve();
  20. });
  21. c.end(1); // start the chain
  22. });
  23. test.asPromise('dataSource: async function', (t, resolve) => {
  24. const output = [],
  25. c = chain([dataSource(delay(() => 0)), streamToArray(output)]);
  26. c.on('end', () => {
  27. t.deepEqual(output, [0]);
  28. resolve();
  29. });
  30. c.end(1); // start the chain
  31. });
  32. test.asPromise('dataSource: generator', (t, resolve) => {
  33. const output = [],
  34. c = chain([
  35. dataSource(function* () {
  36. yield 0;
  37. yield 1;
  38. }),
  39. streamToArray(output)
  40. ]);
  41. c.on('end', () => {
  42. t.deepEqual(output, [0, 1]);
  43. resolve();
  44. });
  45. c.end(1); // start the chain
  46. });
  47. test.asPromise('dataSource: async generator', (t, resolve) => {
  48. const output = [],
  49. c = chain([
  50. dataSource(async function* () {
  51. yield delay(() => 0)();
  52. yield delay(() => 1)();
  53. }),
  54. streamToArray(output)
  55. ]);
  56. c.on('end', () => {
  57. t.deepEqual(output, [0, 1]);
  58. resolve();
  59. });
  60. c.end(1); // start the chain
  61. });
  62. test.asPromise('dataSource: nextable', (t, resolve) => {
  63. const output = [],
  64. c = chain([
  65. dataSource(
  66. (function* () {
  67. yield 0;
  68. yield 1;
  69. })()
  70. ),
  71. streamToArray(output)
  72. ]);
  73. c.on('end', () => {
  74. t.deepEqual(output, [0, 1]);
  75. resolve();
  76. });
  77. c.end(1); // start the chain
  78. });