lines.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. var assert = require('assert');
  2. var Lazy = require('..');
  3. var EventEmitter = require('events').EventEmitter;
  4. exports['buffered lines'] = function () {
  5. var lazy = Lazy();
  6. var joined = false;
  7. lazy.lines
  8. .forEach(function (line) {
  9. assert.ok(line instanceof Buffer);
  10. assert.ok(!line.toString().match(/\n/));
  11. assert.ok(line.length > 0);
  12. })
  13. .join(function (lines) {
  14. assert.deepEqual(
  15. lines.map(function (x) { return x.toString() }),
  16. 'foo bar baz quux moo'.split(' ')
  17. );
  18. joined = true;
  19. });
  20. ;
  21. setTimeout(function () {
  22. lazy.push(new Buffer('foo\nbar'));
  23. lazy.push(new Buffer('\nbaz\nquux\nmoo'));
  24. lazy.push(new Buffer(''));
  25. lazy.push(new Buffer('\ndoom'));
  26. lazy.end();
  27. assert.ok(joined);
  28. }, 50);
  29. };
  30. exports['string lines'] = function () {
  31. var lazy = Lazy();
  32. var joined = false;
  33. lazy.lines
  34. .forEach(function (line) {
  35. assert.ok(line instanceof Buffer);
  36. assert.ok(!line.toString().match(/\n/));
  37. assert.ok(line.length > 0);
  38. })
  39. .join(function (lines) {
  40. assert.deepEqual(
  41. lines.map(function (x) { return x.toString() }),
  42. 'foo bar baz quux moo'.split(' ')
  43. );
  44. joined = true;
  45. });
  46. ;
  47. setTimeout(function () {
  48. lazy.push('foo\nbar');
  49. lazy.push('\nbaz\nquux\nmoo');
  50. lazy.push('');
  51. lazy.push('\ndoom');
  52. lazy.end();
  53. assert.ok(joined);
  54. }, 50);
  55. };
  56. exports.endStream = function () {
  57. var to = setTimeout(function () {
  58. assert.fail('never finished');
  59. }, 2500);
  60. var em = new EventEmitter;
  61. var i = 0;
  62. var lines = [];
  63. Lazy(em).lines.forEach(function (line) {
  64. i ++;
  65. lines.push(line);
  66. if (i == 2) {
  67. clearTimeout(to);
  68. assert.eql(lines.map(String), [ 'foo', 'bar' ]);
  69. }
  70. });
  71. setTimeout(function () {
  72. em.emit('data', 'fo');
  73. }, 100);
  74. setTimeout(function () {
  75. em.emit('data', 'o\nbar');
  76. }, 150);
  77. setTimeout(function () {
  78. em.emit('end');
  79. }, 200);
  80. };