mirror of https://github.com/nodejs/node.git
test: Writable bufferizing, non-bufferizing, and callbacks
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…
Reference in New Issue