test: Writable bufferizing, non-bufferizing, and callbacks
This commit is contained in:
parent
71e2b61388
commit
f3e71eb417
@ -140,3 +140,101 @@ test('write backpressure', function(t) {
|
|||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('write bufferize', function(t) {
|
||||||
|
var tw = new TestWriter({
|
||||||
|
lowWaterMark: 5,
|
||||||
|
highWaterMark: 100
|
||||||
|
});
|
||||||
|
|
||||||
|
var encodings =
|
||||||
|
[ 'hex',
|
||||||
|
'utf8',
|
||||||
|
'utf-8',
|
||||||
|
'ascii',
|
||||||
|
'binary',
|
||||||
|
'base64',
|
||||||
|
'ucs2',
|
||||||
|
'ucs-2',
|
||||||
|
'utf16le',
|
||||||
|
'utf-16le',
|
||||||
|
undefined ];
|
||||||
|
|
||||||
|
tw.on('finish', function() {
|
||||||
|
t.same(tw.buffer, chunks, 'got the expected chunks');
|
||||||
|
});
|
||||||
|
|
||||||
|
chunks.forEach(function(chunk, i) {
|
||||||
|
var enc = encodings[ i % encodings.length ];
|
||||||
|
chunk = new Buffer(chunk);
|
||||||
|
tw.write(chunk.toString(enc), enc);
|
||||||
|
});
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('write no bufferize', function(t) {
|
||||||
|
var tw = new TestWriter({
|
||||||
|
lowWaterMark: 5,
|
||||||
|
highWaterMark: 100,
|
||||||
|
decodeStrings: false
|
||||||
|
});
|
||||||
|
|
||||||
|
tw._write = function(chunk, cb) {
|
||||||
|
assert(Array.isArray(chunk));
|
||||||
|
assert(typeof chunk[0] === 'string');
|
||||||
|
chunk = new Buffer(chunk[0], chunk[1]);
|
||||||
|
return TestWriter.prototype._write.call(this, chunk, cb);
|
||||||
|
};
|
||||||
|
|
||||||
|
var encodings =
|
||||||
|
[ 'hex',
|
||||||
|
'utf8',
|
||||||
|
'utf-8',
|
||||||
|
'ascii',
|
||||||
|
'binary',
|
||||||
|
'base64',
|
||||||
|
'ucs2',
|
||||||
|
'ucs-2',
|
||||||
|
'utf16le',
|
||||||
|
'utf-16le',
|
||||||
|
undefined ];
|
||||||
|
|
||||||
|
tw.on('finish', function() {
|
||||||
|
t.same(tw.buffer, chunks, 'got the expected chunks');
|
||||||
|
});
|
||||||
|
|
||||||
|
chunks.forEach(function(chunk, i) {
|
||||||
|
var enc = encodings[ i % encodings.length ];
|
||||||
|
chunk = new Buffer(chunk);
|
||||||
|
tw.write(chunk.toString(enc), enc);
|
||||||
|
});
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('write callbacks', function (t) {
|
||||||
|
var callbacks = chunks.map(function(chunk, i) {
|
||||||
|
return [i, function(er) {
|
||||||
|
callbacks._called[i] = chunk;
|
||||||
|
}];
|
||||||
|
}).reduce(function(set, x) {
|
||||||
|
set['callback-' + x[0]] = x[1];
|
||||||
|
return set;
|
||||||
|
}, {});
|
||||||
|
callbacks._called = [];
|
||||||
|
|
||||||
|
var tw = new TestWriter({
|
||||||
|
lowWaterMark: 5,
|
||||||
|
highWaterMark: 100
|
||||||
|
});
|
||||||
|
|
||||||
|
tw.on('finish', function() {
|
||||||
|
t.same(tw.buffer, chunks, 'got chunks in the right order');
|
||||||
|
t.same(callbacks._called, chunks, 'called all callbacks');
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
chunks.forEach(function(chunk, i) {
|
||||||
|
tw.write(chunk, callbacks['callback-' + i]);
|
||||||
|
});
|
||||||
|
tw.end();
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user