add unit tests for copyFromStream class
This commit is contained in:
parent
bcd47edd62
commit
3a2684c928
94
test/unit/copystream/copyfrom-tests.js
Normal file
94
test/unit/copystream/copyfrom-tests.js
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
var helper = require(__dirname + '/../test-helper');
|
||||||
|
var CopyFromStream = require(__dirname + '/../../../lib/copystream').CopyFromStream;
|
||||||
|
var ConnectionImitation = function () {
|
||||||
|
this.send = 0;
|
||||||
|
this.hasToBeSend = 0;
|
||||||
|
this.finished = 0;
|
||||||
|
};
|
||||||
|
ConnectionImitation.prototype = {
|
||||||
|
endCopyFrom: function () {
|
||||||
|
assert.ok(this.finished++ === 0, "end shoud be called only once");
|
||||||
|
assert.equal(this.send, this.hasToBeSend, "at the moment of the end all data has to be sent");
|
||||||
|
},
|
||||||
|
sendCopyFromChunk: function (chunk) {
|
||||||
|
this.send += chunk.length;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
updateHasToBeSend: function (chunk) {
|
||||||
|
this.hasToBeSend += chunk.length;
|
||||||
|
return chunk;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var buf1 = new Buffer("asdfasd"),
|
||||||
|
buf2 = new Buffer("q03r90arf0aospd;"),
|
||||||
|
buf3 = new Buffer(542),
|
||||||
|
buf4 = new Buffer("93jfemialfjkasjlfas");
|
||||||
|
|
||||||
|
test('stream has to finish data stream to connection exactly once', function () {
|
||||||
|
var stream = new CopyFromStream();
|
||||||
|
var conn = new ConnectionImitation();
|
||||||
|
stream.on('drain', function () {
|
||||||
|
assert.ok(false, "there has not be drain event");
|
||||||
|
});
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
assert.ok(stream.write(conn.updateHasToBeSend(buf1)));
|
||||||
|
assert.ok(stream.write(conn.updateHasToBeSend(buf2)));
|
||||||
|
assert.ok(stream.write(conn.updateHasToBeSend(buf3)));
|
||||||
|
assert.ok(stream.writable, "stream has to be writable");
|
||||||
|
stream.end(conn.updateHasToBeSend(buf4));
|
||||||
|
assert.ok(!stream.writable, "stream has not to be writable");
|
||||||
|
stream.end();
|
||||||
|
});
|
||||||
|
test('', function () {
|
||||||
|
var stream = new CopyFromStream();
|
||||||
|
assert.emits(stream, 'drain', function() {}, 'drain have to be emitted');
|
||||||
|
var conn = new ConnectionImitation()
|
||||||
|
assert.ok(!stream.write(conn.updateHasToBeSend(buf1)));
|
||||||
|
assert.ok(!stream.write(conn.updateHasToBeSend(buf2)));
|
||||||
|
assert.ok(!stream.write(conn.updateHasToBeSend(buf3)));
|
||||||
|
assert.ok(stream.writable, "stream has to be writable");
|
||||||
|
stream.end(conn.updateHasToBeSend(buf4));
|
||||||
|
assert.ok(!stream.writable, "stream has not to be writable");
|
||||||
|
stream.end();
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
});
|
||||||
|
test('', function () {
|
||||||
|
var stream = new CopyFromStream();
|
||||||
|
var conn = new ConnectionImitation()
|
||||||
|
assert.emits(stream, 'drain', function() {}, 'drain have to be emitted');
|
||||||
|
stream.write(conn.updateHasToBeSend(buf1));
|
||||||
|
stream.write(conn.updateHasToBeSend(buf2));
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
stream.write(conn.updateHasToBeSend(buf3));
|
||||||
|
assert.ok(stream.writable, "stream has to be writable");
|
||||||
|
stream.end(conn.updateHasToBeSend(buf4));
|
||||||
|
assert.ok(!stream.writable, "stream has not to be writable");
|
||||||
|
stream.end();
|
||||||
|
});
|
||||||
|
test('', function () {
|
||||||
|
var stream = new CopyFromStream();
|
||||||
|
var conn = new ConnectionImitation()
|
||||||
|
assert.emits(stream, 'drain', function() {}, 'drain have to be emitted');
|
||||||
|
stream.write(conn.updateHasToBeSend(buf1));
|
||||||
|
stream.write(conn.updateHasToBeSend(buf2));
|
||||||
|
stream.write(conn.updateHasToBeSend(buf3));
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
assert.ok(stream.writable, "stream has to be writable");
|
||||||
|
stream.end(conn.updateHasToBeSend(buf4));
|
||||||
|
assert.ok(!stream.writable, "stream has not to be writable");
|
||||||
|
stream.end();
|
||||||
|
});
|
||||||
|
test('', function(){
|
||||||
|
var stream = new CopyFromStream();
|
||||||
|
var conn = new ConnectionImitation()
|
||||||
|
assert.emits(stream, 'drain', function() {}, 'drain have to be emitted');
|
||||||
|
stream.write(conn.updateHasToBeSend(buf1));
|
||||||
|
stream.write(conn.updateHasToBeSend(buf2));
|
||||||
|
stream.write(conn.updateHasToBeSend(buf3));
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
assert.ok(stream.writable, "stream has to be writable");
|
||||||
|
stream.end(conn.updateHasToBeSend(buf4));
|
||||||
|
stream.startStreamingToConnection(conn);
|
||||||
|
assert.ok(!stream.writable, "stream has not to be writable");
|
||||||
|
stream.end();
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user