test_fold.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. const unit = require('heya-unit');
  3. const Chain = require('../index');
  4. const {streamFromArray} = require('./helpers');
  5. const fold = require('../utils/fold');
  6. const scan = require('../utils/scan');
  7. const Reduce = require('../utils/Reduce');
  8. unit.add(module, [
  9. function test_fold(t) {
  10. const async = t.startAsync('test_fold');
  11. const chain = new Chain([fold((acc, x) => acc + x, 0)]),
  12. output = [];
  13. streamFromArray([1, 2, 3]).pipe(chain);
  14. chain.on('data', value => output.push(value));
  15. chain.on('end', () => {
  16. eval(t.TEST('t.unify(output, [6])'));
  17. async.done();
  18. });
  19. },
  20. function test_foldScan(t) {
  21. const async = t.startAsync('test_foldScan');
  22. const chain = new Chain([scan((acc, x) => acc + x, 0)]),
  23. output = [];
  24. streamFromArray([1, 2, 3]).pipe(chain);
  25. chain.on('data', value => output.push(value));
  26. chain.on('end', () => {
  27. eval(t.TEST('t.unify(output, [1, 3, 6])'));
  28. async.done();
  29. });
  30. },
  31. function test_foldReduce(t) {
  32. const async = t.startAsync('test_foldReduce');
  33. const reduce = new Reduce({reducer: (acc, x) => acc + x, initial: 0});
  34. streamFromArray([1, 2, 3]).pipe(reduce);
  35. reduce.on('finish', () => {
  36. eval(t.TEST('t.unify(reduce.accumulator, 6)'));
  37. async.done();
  38. });
  39. }
  40. ]);