Skip to content

Commit 567f697

Browse files
authored
Add zlib tests (#74)
1 parent e7d3563 commit 567f697

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed

test/zlib.tap.js

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
if (!process.addAsyncListener) require('../index.js');
2+
3+
var test = require('tap').test;
4+
var zlib = require('zlib');
5+
6+
// Convert semver string to number set
7+
// TODO: This is *very* naive structure to check versions with,
8+
// but it works well enough for now...
9+
var nodeVersion = process.version.slice(1).split('.').map(Number)
10+
11+
var compressors = ['deflate', 'deflateRaw', 'gzip'];
12+
var decompressors = ['inflate', 'inflateRaw', 'gunzip'];
13+
14+
compressors.forEach(function (method) {
15+
var name = 'zlib.' + method;
16+
var el = {
17+
name: name,
18+
children: [],
19+
before: 1,
20+
after: 1,
21+
error: 0
22+
};
23+
var list = [ el ];
24+
if (nodeVersion[0] >= 6) {
25+
list.push(el);
26+
}
27+
28+
test('test ' + name, function (t) {
29+
test_helper(t, function (listener, done) {
30+
listener.currentName = name;
31+
zlib[method](new Buffer('Goodbye World'), done);
32+
}, {
33+
name: 'root',
34+
children: [
35+
{
36+
name: name,
37+
// Compressors use streams internally,
38+
// so there's a bunch of nested stuff.
39+
children: [
40+
{
41+
name: name,
42+
children: [
43+
{
44+
name: name,
45+
children: list,
46+
before: 1,
47+
after: 1,
48+
error: 0
49+
}
50+
],
51+
before: 1,
52+
after: 1,
53+
error: 0
54+
}
55+
],
56+
before: 1,
57+
after: 1,
58+
error: 0
59+
}
60+
],
61+
before: 0,
62+
after: 0,
63+
error: 0
64+
});
65+
});
66+
});
67+
68+
decompressors.forEach(function (method, i) {
69+
var preMethod = compressors[i];
70+
var name = 'zlib.' + method;
71+
var el = {
72+
name: name,
73+
children: [],
74+
before: 1,
75+
after: 1,
76+
error: 0
77+
};
78+
var list = [ el ];
79+
if (nodeVersion[0] >= 6) {
80+
list.push(el);
81+
}
82+
83+
test('test ' + name, function (t) {
84+
zlib[preMethod](new Buffer('Goodbye World'), function (err, buf) {
85+
t.ok(!err, 'should not have errored in preparation')
86+
test_helper(t, function (listener, done) {
87+
listener.currentName = name;
88+
zlib[method](buf, done);
89+
}, {
90+
name: 'root',
91+
children: [
92+
{
93+
name: name,
94+
// Compressors use streams internally,
95+
// so there's a bunch of nested stuff.
96+
children: [
97+
{
98+
name: name,
99+
children: [
100+
{
101+
name: name,
102+
children: list,
103+
before: 1,
104+
after: 1,
105+
error: 0
106+
}
107+
],
108+
before: 1,
109+
after: 1,
110+
error: 0
111+
}
112+
],
113+
before: 1,
114+
after: 1,
115+
error: 0
116+
}
117+
],
118+
before: 0,
119+
after: 0,
120+
error: 0
121+
});
122+
});
123+
});
124+
});
125+
126+
function test_helper (t, run, expect) {
127+
// Trigger callback out-of-band from async listener
128+
var args;
129+
var interval = setInterval(function () {
130+
if (args) {
131+
clearInterval(interval);
132+
t.ok(!args[0], 'should not have errored');
133+
t.deepEqual(listener.root, expect);
134+
t.end();
135+
}
136+
}, 5);
137+
138+
var listener = addListner();
139+
run(listener, function () {
140+
args = Array.prototype.slice.call(arguments);
141+
});
142+
process.removeAsyncListener(listener.listener);
143+
}
144+
145+
function addListner() {
146+
var listener = process.addAsyncListener({
147+
create: create,
148+
before: before,
149+
after: after,
150+
error: error
151+
});
152+
153+
154+
var state = {
155+
listener: listener,
156+
currentName: 'root'
157+
};
158+
159+
state.root = create();
160+
state.current = state.root;
161+
162+
return state;
163+
164+
function create () {
165+
var node = {
166+
name: state.currentName,
167+
children: [],
168+
before: 0,
169+
after: 0,
170+
error: 0
171+
};
172+
173+
if(state.current) state.current.children.push(node);
174+
return node;
175+
}
176+
177+
function before(ctx, node) {
178+
state.current = node;
179+
state.current.before++;
180+
}
181+
182+
function after(ctx, node) {
183+
node.after++;
184+
state.current = null;
185+
}
186+
187+
function error(ctx, node) {
188+
node.error++;
189+
state.current = null;
190+
return false;
191+
}
192+
}

0 commit comments

Comments
 (0)