test-take.mjs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. 'use strict';
  2. import test from 'tape-six';
  3. import {streamToArray, delay} from './helpers.mjs';
  4. import chain, {stop} from '../src/index.js';
  5. import fromIterable from '../src/utils/fromIterable.js';
  6. import take from '../src/utils/take.js';
  7. import takeWhile from '../src/utils/takeWhile.js';
  8. import takeWithSkip from '../src/utils/takeWithSkip.js';
  9. test.asPromise('take: smoke test', (t, resolve) => {
  10. const output = [],
  11. c = chain([fromIterable([1, 2, 3, 4, 5]), take(2), streamToArray(output)]);
  12. c.on('end', () => {
  13. t.deepEqual(output, [1, 2]);
  14. resolve();
  15. });
  16. });
  17. test.asPromise('simple: with skip', (t, resolve) => {
  18. const output = [],
  19. c = chain([fromIterable([1, 2, 3, 4, 5]), takeWithSkip(2, 2), streamToArray(output)]);
  20. c.on('end', () => {
  21. t.deepEqual(output, [3, 4]);
  22. resolve();
  23. });
  24. });
  25. test.asPromise('simple: while', (t, resolve) => {
  26. const output = [],
  27. c = chain([fromIterable([1, 2, 3, 4, 5]), takeWhile(x => x != 3), streamToArray(output)]);
  28. c.on('end', () => {
  29. t.deepEqual(output, [1, 2]);
  30. resolve();
  31. });
  32. });
  33. test.asPromise('simple: while async', (t, resolve) => {
  34. const output = [],
  35. c = chain([
  36. fromIterable([1, 2, 3, 4, 5]),
  37. takeWhile(delay(x => x != 3)),
  38. streamToArray(output)
  39. ]);
  40. c.on('end', () => {
  41. t.deepEqual(output, [1, 2]);
  42. resolve();
  43. });
  44. });
  45. test.asPromise('simple: stop', (t, resolve) => {
  46. const output = [],
  47. c = chain([fromIterable([1, 2, 3, 4, 5]), take(2, stop), streamToArray(output)]);
  48. c.on('end', () => {
  49. t.deepEqual(output, [1, 2]);
  50. resolve();
  51. });
  52. });
  53. test.asPromise('simple: stop with skip', (t, resolve) => {
  54. const output = [],
  55. c = chain([fromIterable([1, 2, 3, 4, 5]), takeWithSkip(2, 2, stop), streamToArray(output)]);
  56. c.on('end', () => {
  57. t.deepEqual(output, [3, 4]);
  58. resolve();
  59. });
  60. });