You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.2 KiB
81 lines
2.2 KiB
var pull = require('pull-stream') |
|
var window = require('../') |
|
var test = require('tape') |
|
|
|
var expected = |
|
[ { start: 0, |
|
data: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ] }, |
|
{ start: 15, data: [ 15, 16, 17, 18, 19, 20 ] }, |
|
{ start: 21, data: [ 21, 22, 23, 24, 25 ] }, |
|
{ start: 26, data: [ 26, 27, 28, 29 ] }, |
|
{ start: 30, data: [ 30, 31, 32, 33 ] }, |
|
{ start: 34, data: [ 34, 35, 36 ] }, |
|
{ start: 37, data: [ 37, 38, 39 ] }, |
|
{ start: 40, data: [ 40, 41, 42 ] }, |
|
{ start: 43, data: [ 43, 44, 45 ] }, |
|
{ start: 46, data: [ 46, 47, 48 ] }, |
|
{ start: 49, data: [ 49, 50, 51 ] }, |
|
{ start: 52, data: [ 52, 53 ] }, |
|
{ start: 54, data: [ 54, 55 ] }, |
|
{ start: 56, data: [ 56, 57 ] }, |
|
{ start: 58, data: [ 58, 59 ] }, |
|
{ start: 60, data: [ 60, 61 ] }, |
|
{ start: 62, data: [ 62, 63 ] }, |
|
{ start: 64, data: [ 64, 65 ] }, |
|
{ start: 66, data: [ 66, 67 ] }, |
|
{ start: 68, data: [ 68, 69 ] }, |
|
{ start: 70, data: [ 70, 71 ] }, |
|
{ start: 72, data: [ 72, 73 ] }, |
|
{ start: 74, data: [ 74, 75 ] }, |
|
{ start: 76, data: [ 76, 77 ] }, |
|
{ start: 78, data: [ 78, 79 ] }, |
|
{ start: 80, data: [ 80, 81 ] }, |
|
{ start: 82, data: [ 82, 83 ] }, |
|
{ start: 84, data: [ 84, 85 ] }, |
|
{ start: 86, data: [ 86, 87 ] }, |
|
{ start: 88, data: [ 88, 89 ] }, |
|
{ start: 90, data: [ 90, 91 ] }, |
|
{ start: 92, data: [ 92, 93 ] }, |
|
{ start: 94, data: [ 94, 95 ] }, |
|
{ start: 96, data: [ 96, 97 ] }, |
|
{ start: 98, data: [ 98, 99 ] }, |
|
{ start: 100, data: [ 100 ] } |
|
] |
|
|
|
function groupTo100 () { |
|
var sum = [] |
|
return window(function (_, cb) { |
|
if(sum.length) return |
|
//if you don't want to start a window here, |
|
//return undefined |
|
|
|
//else return a function. |
|
//this will be called all data |
|
//until you callback. |
|
return function (end, data) { |
|
if(end) return cb(null, sum) |
|
sum.push(data) |
|
var total = sum.reduce(function (a, b) { return a + b }, 0) |
|
if(total >= 100) { |
|
var _sum = sum |
|
sum = [] |
|
cb(null, _sum) |
|
} |
|
} |
|
}) |
|
} |
|
|
|
test('tumbling to 100', function (t) { |
|
|
|
pull( |
|
pull.count(100), |
|
groupTo100(), |
|
pull.collect(function (err, ary) { |
|
t.deepEqual(ary, expected) |
|
console.log(ary) |
|
t.end() |
|
}) |
|
) |
|
|
|
}) |
|
|
|
|