-
Notifications
You must be signed in to change notification settings - Fork 5
/
test.js
98 lines (83 loc) · 2.17 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
var test = require('tape')
var through = require('through2')
var crypto = require('crypto')
var byteStream = require('./')
function batchTest(limit, getSize, cb) {
if (!cb) {
cb = getSize
getSize = undefined
}
var batcher = byteStream(limit, getSize)
var writer = through.obj(onBatch, onEnd)
batcher.on('error', cb)
batcher.pipe(writer)
var batches = []
function onBatch(batch, _, callback) {
batches.push(batch)
callback();
}
function onEnd(callback) {
cb(false, batches)
callback()
}
return batcher
}
test('equal size batches + objects', function(t) {
var batcher = batchTest(1024, function(err, batches) {
if (err) throw err
t.equals(batches.length, 10)
t.end()
})
for (var i = 0; i < 10; i++) batcher.write(crypto.randomBytes(1024))
batcher.end()
})
test('objects half the size of a batch', function(t) {
var batcher = batchTest(1024, function(err, batches) {
if (err) throw err
t.equals(batches.length, 10)
t.end()
})
for (var i = 0; i < 19; i++) batcher.write(crypto.randomBytes(512))
batcher.end()
})
test('objects twice the size of a batch', function(t) {
var batcher = batchTest(512, function(err, batches) {
if (err) throw err
t.equals(batches.length, 20)
t.end()
})
for (var i = 0; i < 20; i++) batcher.write(crypto.randomBytes(1024))
batcher.end()
})
test('object objects', function(t) {
var batcher = batchTest(50, function(err, batches) {
if (err) throw err
t.equals(batches.length, 3)
t.end()
})
for (var i = 0; i < 11; i++) batcher.write(JSON.stringify({"fo": "o"}))
batcher.end()
})
test('batch after time', function(t) {
var batcher = batchTest({time:100}, function(err, batches) {
if (err) throw err
t.equals(batches.length, 2)
t.same(batches[0], ['hel'])
t.same(batches[1], ['lo', 'world'])
t.end()
})
batcher.write('hel')
setTimeout(function() {
batcher.write('lo')
batcher.write('world')
batcher.end()
}, 250)
})
test('destroy', function(t) {
var batcher = batchTest({time:100}, function(err, batches) {
t.ok(err, 'should err')
t.end()
})
batcher.write('test')
batcher.destroy(new Error('stop'))
})