Skip to content

Commit 4ef99b2

Browse files
antonbrianc
anton
authored andcommitted
write unit tests for CopyToStream class
1 parent 3a2684c commit 4ef99b2

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

test/unit/copystream/copyto-tests.js

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
var helper = require(__dirname + '/../test-helper');
2+
var CopyToStream = require(__dirname + '/../../../lib/copystream').CopyToStream;
3+
var DataCounter = function () {
4+
this.sendBytes = 0;
5+
this.recievedBytes = 0;
6+
};
7+
DataCounter.prototype = {
8+
send: function (buf) {
9+
this.sendBytes += buf.length;
10+
return buf;
11+
},
12+
recieve: function (chunk) {
13+
this.recievedBytes += chunk.length;
14+
},
15+
assert: function () {
16+
assert.equal(this.sendBytes, this.recievedBytes);
17+
}
18+
};
19+
var buf1 = new Buffer("asdfasd"),
20+
buf2 = new Buffer("q03r90arf0aospd;"),
21+
buf3 = new Buffer(542),
22+
buf4 = new Buffer("93jfemialfjkasjlfas");
23+
test('CopyToStream simple', function () {
24+
var stream = new CopyToStream(),
25+
dc = new DataCounter();
26+
assert.emits(stream, 'end', function () {}, '');
27+
stream.on('data', dc.recieve.bind(dc));
28+
stream.handleChunk(dc.send(buf1));
29+
stream.handleChunk(dc.send(buf2));
30+
stream.handleChunk(dc.send(buf3));
31+
stream.handleChunk(dc.send(buf4));
32+
dc.assert();
33+
stream.close();
34+
});
35+
test('CopyToStream pause/resume/close', function () {
36+
var stream = new CopyToStream(),
37+
dc = new DataCounter();
38+
stream.on('data', dc.recieve.bind(dc));
39+
assert.emits(stream, 'end', function () {}, '');
40+
stream.pause();
41+
stream.handleChunk(dc.send(buf1));
42+
stream.handleChunk(dc.send(buf2));
43+
stream.handleChunk(dc.send(buf3));
44+
assert.equal(dc.recievedBytes, 0);
45+
stream.resume();
46+
dc.assert();
47+
stream.handleChunk(dc.send(buf2));
48+
dc.assert();
49+
stream.handleChunk(dc.send(buf3));
50+
dc.assert();
51+
stream.pause();
52+
stream.handleChunk(dc.send(buf4));
53+
assert(dc.sendBytes - dc.recievedBytes, buf4.length);
54+
stream.resume();
55+
dc.assert();
56+
stream.close();
57+
});
58+
test('CopyToStream error', function () {
59+
var stream = new CopyToStream(),
60+
dc = new DataCounter();
61+
stream.on('data', dc.recieve.bind(dc));
62+
assert.emits(stream, 'error', function () {}, '');
63+
stream.handleChunk(dc.send(buf1));
64+
stream.handleChunk(dc.send(buf2));
65+
stream.error(new Error('test error'));
66+
});
67+
test('CopyToStream do not emit anything while paused', function () {
68+
var stream = new CopyToStream();
69+
stream.on('data', function () {
70+
assert.ok(false, "stream has not emit data when paused");
71+
});
72+
stream.on('end', function () {
73+
assert.ok(false, "stream has not emit end when paused");
74+
});
75+
stream.on('error', function () {
76+
assert.ok(false, "stream has not emit end when paused");
77+
});
78+
stream.pause();
79+
stream.handleChunk(buf2);
80+
stream.close();
81+
stream.error();
82+
});
83+
test('CopyToStream emit data and error after resume', function () {
84+
var stream = new CopyToStream(),
85+
paused;
86+
stream.on('data', function () {
87+
assert.ok(!paused, "stream has not emit data when paused");
88+
});
89+
stream.on('end', function () {
90+
assert.ok(!paused, "stream has not emit end when paused");
91+
});
92+
stream.on('error', function () {
93+
assert.ok(!paused, "stream has not emit end when paused");
94+
});
95+
paused = true;
96+
stream.pause();
97+
stream.handleChunk(buf2);
98+
stream.error();
99+
paused = false;
100+
stream.resume();
101+
});
102+
test('CopyToStream emit data and end after resume', function () {
103+
var stream = new CopyToStream(),
104+
paused;
105+
stream.on('data', function () {
106+
assert.ok(!paused, "stream has not emit data when paused");
107+
});
108+
stream.on('end', function () {
109+
assert.ok(!paused, "stream has not emit end when paused");
110+
});
111+
stream.on('error', function () {
112+
assert.ok(!paused, "stream has not emit end when paused");
113+
});
114+
paused = true;
115+
stream.pause();
116+
stream.handleChunk(buf2);
117+
stream.close();
118+
paused = false;
119+
stream.resume();
120+
});
121+
122+

0 commit comments

Comments
 (0)