test_transducers.mjs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. import test from 'tape-six';
  3. import {streamToArray} from './helpers.mjs';
  4. import chain, {gen} from '../src/index.js';
  5. import fromIterable from '../src/utils/fromIterable.js';
  6. test.asPromise('transducers: smoke test', (t, resolve) => {
  7. const output = [],
  8. c = chain([
  9. fromIterable([1, 2, 3]),
  10. gen(
  11. x => x * x,
  12. x => 2 * x + 1
  13. ),
  14. streamToArray(output)
  15. ]);
  16. c.on('end', () => {
  17. t.deepEqual(output, [3, 9, 19]);
  18. resolve();
  19. });
  20. });
  21. test.asPromise('transducers: final', (t, resolve) => {
  22. const output = [],
  23. c = chain([
  24. fromIterable([1, 2, 3]),
  25. gen(
  26. x => x * x,
  27. x => chain.finalValue(x),
  28. x => 2 * x + 1
  29. ),
  30. streamToArray(output)
  31. ]);
  32. c.on('end', () => {
  33. t.deepEqual(output, [1, 4, 9]);
  34. resolve();
  35. });
  36. });
  37. test.asPromise('transducers: nothing', (t, resolve) => {
  38. const output = [],
  39. c = chain([
  40. fromIterable([1, 2, 3]),
  41. gen(
  42. x => x * x,
  43. () => chain.none,
  44. x => 2 * x + 1
  45. ),
  46. streamToArray(output)
  47. ]);
  48. c.on('end', () => {
  49. t.deepEqual(output, []);
  50. resolve();
  51. });
  52. });
  53. test.asPromise('transducers: empty', (t, resolve) => {
  54. const output = [],
  55. c = chain([fromIterable([1, 2, 3]), x => x * x, gen(), streamToArray(output)]);
  56. c.on('end', () => {
  57. t.deepEqual(output, [1, 4, 9]);
  58. resolve();
  59. });
  60. });
  61. test.asPromise('transducers: one', (t, resolve) => {
  62. const output = [],
  63. c = chain([fromIterable([1, 2, 3]), x => x * x, gen(x => 2 * x + 1), streamToArray(output)]);
  64. c.on('end', () => {
  65. t.deepEqual(output, [3, 9, 19]);
  66. resolve();
  67. });
  68. });