test_readWrite.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. 'use strict';
  2. const unit = require('heya-unit');
  3. const Chain = require('../index');
  4. const {streamToArray} = require('./helpers');
  5. const {fromIterable} = require('../utils/FromIterable');
  6. unit.add(module, [
  7. function test_readWriteReadable(t) {
  8. const async = t.startAsync('test_readWriteReadable');
  9. const output1 = [],
  10. output2 = [],
  11. chain = new Chain([fromIterable([1, 2, 3]), x => x * x]);
  12. chain.pipe(streamToArray(output1));
  13. chain.on('data', value => output2.push(value));
  14. chain.on('end', () => {
  15. eval(t.TEST('t.unify(output1, [1, 4, 9])'));
  16. eval(t.TEST('t.unify(output2, [1, 4, 9])'));
  17. async.done();
  18. });
  19. },
  20. function test_readWriteWritable(t) {
  21. const async = t.startAsync('test_readWriteWritable');
  22. const output = [],
  23. chain = new Chain([x => x * x, streamToArray(output)]);
  24. fromIterable([1, 2, 3]).pipe(chain);
  25. chain.on('end', () => {
  26. eval(t.TEST('t.unify(output, [1, 4, 9])'));
  27. async.done();
  28. });
  29. },
  30. function test_readWriteReadableWritable(t) {
  31. const async = t.startAsync('test_readWriteReadableWritable');
  32. const output = [],
  33. chain = new Chain([fromIterable([1, 2, 3]), x => x * x, streamToArray(output)]);
  34. chain.on('end', () => {
  35. eval(t.TEST('t.unify(output, [1, 4, 9])'));
  36. async.done();
  37. });
  38. },
  39. function test_readWriteSingleReadable(t) {
  40. const async = t.startAsync('test_readWriteSingleReadable');
  41. const output1 = [],
  42. output2 = [],
  43. chain = new Chain([fromIterable([1, 2, 3])]);
  44. chain.pipe(streamToArray(output1));
  45. chain.on('data', value => output2.push(value));
  46. chain.on('end', () => {
  47. eval(t.TEST('t.unify(output1, [1, 2, 3])'));
  48. eval(t.TEST('t.unify(output2, [1, 2, 3])'));
  49. async.done();
  50. });
  51. },
  52. function test_readWriteSingleWritable(t) {
  53. const async = t.startAsync('test_readWriteSingleWritable');
  54. const output = [],
  55. chain = new Chain([streamToArray(output)]);
  56. fromIterable([1, 2, 3]).pipe(chain);
  57. chain.on('end', () => {
  58. eval(t.TEST('t.unify(output, [1, 2, 3])'));
  59. async.done();
  60. });
  61. },
  62. function test_readWritePipeable(t) {
  63. const async = t.startAsync('test_readWritePipeable');
  64. const output1 = [],
  65. output2 = [],
  66. chain = new Chain([fromIterable([1, 2, 3]), streamToArray(output1)]);
  67. fromIterable([4, 5, 6])
  68. .pipe(chain)
  69. .pipe(streamToArray(output2));
  70. chain.on('end', () => {
  71. eval(t.TEST('t.unify(output1, [1, 2, 3])'));
  72. eval(t.TEST('t.unify(output2, [])'));
  73. async.done();
  74. });
  75. }
  76. ]);