test_take.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. const unit = require('heya-unit');
  3. const {streamToArray, delay} = require('./helpers');
  4. const Chain = require('../src/index');
  5. const {fromIterable} = require('../src/utils/FromIterable');
  6. const take = require('../src/utils/take');
  7. const takeWhile = require('../src/utils/takeWhile');
  8. const takeWithSkip = require('../src/utils/takeWithSkip');
  9. const {stop} = Chain;
  10. unit.add(module, [
  11. function test_take(t) {
  12. const async = t.startAsync('test_take');
  13. const output = [],
  14. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), take(2), streamToArray(output)]);
  15. chain.on('end', () => {
  16. eval(t.TEST('t.unify(output, [1, 2])'));
  17. async.done();
  18. });
  19. },
  20. function test_takeWithSkip(t) {
  21. const async = t.startAsync('test_takeWithSkip');
  22. const output = [],
  23. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), takeWithSkip(2, 2), streamToArray(output)]);
  24. chain.on('end', () => {
  25. eval(t.TEST('t.unify(output, [3, 4])'));
  26. async.done();
  27. });
  28. },
  29. function test_takeWhile(t) {
  30. const async = t.startAsync('test_takeWhile');
  31. const output = [],
  32. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), takeWhile(x => x != 3), streamToArray(output)]);
  33. chain.on('end', () => {
  34. eval(t.TEST('t.unify(output, [1, 2])'));
  35. async.done();
  36. });
  37. },
  38. function test_takeWhileAsync(t) {
  39. const async = t.startAsync('test_takeWhileAsync');
  40. const output = [],
  41. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), takeWhile(delay(x => x != 3)), streamToArray(output)]);
  42. chain.on('end', () => {
  43. eval(t.TEST('t.unify(output, [1, 2])'));
  44. async.done();
  45. });
  46. },
  47. function test_takeStop(t) {
  48. const async = t.startAsync('test_takeStop');
  49. const output = [],
  50. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), take(2, stop), streamToArray(output)]);
  51. chain.on('end', () => {
  52. eval(t.TEST('t.unify(output, [1, 2])'));
  53. async.done();
  54. });
  55. },
  56. function test_takeStopWithSkip(t) {
  57. const async = t.startAsync('test_takeStopWithSkip');
  58. const output = [],
  59. chain = new Chain([fromIterable([1, 2, 3, 4, 5]), takeWithSkip(2, 2, stop), streamToArray(output)]);
  60. chain.on('end', () => {
  61. eval(t.TEST('t.unify(output, [3, 4])'));
  62. async.done();
  63. });
  64. }
  65. ]);