test_readWrite.js 2.5 KB

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