| 'use strict'; |
| var test = require('tape'); |
| var noms = require('./'); |
| |
| function countObj(num) { |
| var i = 20; |
| return noms.obj(function(next) { |
| if (++i < num) { |
| this.push({ |
| num: i |
| }); |
| } else { |
| this.push(null); |
| } |
| process.nextTick(function () { |
| next(); |
| }); |
| }, function (next){ |
| this.push({ |
| num: 0 |
| }); |
| i = 1; |
| next(null, {num: 1}); |
| }); |
| } |
| function countObjWithNext(num) { |
| var i = -1; |
| return noms.obj(function(next) { |
| if (++i < num) { |
| process.nextTick(function () { |
| next(null, { |
| num: i |
| }); |
| }); |
| } else { |
| process.nextTick(function () { |
| next(null, null); |
| }); |
| } |
| }); |
| } |
| function dripWordAsync(string, opts) { |
| // from from2's tests |
| return noms(opts||{}, function(size, next) { |
| if (string.length <= 0) { |
| return next(null, null); |
| } |
| var chunk = string.slice(0, size); |
| string = string.slice(size); |
| process.nextTick(function () { |
| next(null, chunk); |
| }); |
| }); |
| } |
| function dripWord(string, opts) { |
| // from from2's tests |
| return noms(opts||{}, function(size, next) { |
| if (string.length <= 0) { |
| return next(null, null); |
| } |
| var chunk = string.slice(0, size); |
| string = string.slice(size); |
| next(null, chunk); |
| }); |
| } |
| test('works', function (t) { |
| t.plan(10); |
| countObj(10).on('data', function (d) { |
| t.ok(true, d.num); |
| }); |
| }); |
| test('works with next', function (t) { |
| t.plan(10); |
| countObjWithNext(10).on('data', function (d) { |
| t.ok(true, d.num); |
| }); |
| }); |
| test('works with size 1', function (t) { |
| t.plan(3); |
| var stream = dripWord('abc'); |
| |
| t.equals(stream.read(1).toString(), 'a'); |
| t.equals(stream.read(1).toString(), 'b'); |
| t.equals(stream.read(1).toString(), 'c'); |
| |
| }); |
| test('works with size 2', function (t) { |
| t.plan(3); |
| dripWord('abcde', {highWaterMark: 2}).on('data', function (d) { |
| t.ok(true, d.toString()); |
| }); |
| }); |
| test('works with size async 1', function (t) { |
| t.plan(3); |
| var stream = dripWordAsync('abc'); |
| stream.on('readable', function () { |
| t.equals(stream.read(1).toString(), 'a'); |
| t.equals(stream.read(1).toString(), 'b'); |
| t.equals(stream.read(1).toString(), 'c'); |
| }); |
| }); |
| test('works with size async 2', function (t) { |
| t.plan(3); |
| dripWordAsync('abcde', {highWaterMark: 2}).on('data', function (d) { |
| t.ok(true, d.toString()); |
| }); |
| }); |