Skip to content

Commit c9dcd62

Browse files
committed
Add tests for q.
Fixes #29.
1 parent ee2587e commit c9dcd62

File tree

2 files changed

+199
-1
lines changed

2 files changed

+199
-1
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"webworkers"
2323
],
2424
"devDependencies": {
25-
"jasmine-node": "x"
25+
"jasmine-node": "x",
26+
"q": "x"
2627
},
2728
"license": "BSD",
2829
"scripts": {

test/q-api.spec.js

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
describe('Q-API', function () {
2+
var Q = require('q');
3+
4+
it('should execute .spawn() correctly', function () {
5+
var Thread = require('../lib/thread.js');
6+
var p = new Thread([1, 2, 3]);
7+
8+
var done = false;
9+
var result = null;
10+
11+
runs(function () {
12+
Q.when(p.spawn(function (data) {
13+
return ['something', 'completly', 'else'];
14+
})).then(function (data) {
15+
result = data;
16+
done = true;
17+
});
18+
});
19+
20+
waitsFor(function () {
21+
return done;
22+
}, "it should finish", 500);
23+
24+
runs(function () {
25+
expect(result).toEqual(['something', 'completly', 'else']);
26+
});
27+
});
28+
29+
it('should .map() correctly', function () {
30+
var Thread = require('../lib/thread.js');
31+
var p = new Thread([1, 2, 3]);
32+
33+
var done = false;
34+
var result = null;
35+
36+
runs(function () {
37+
Q.when(p.map(function (el) {
38+
return el + 1;
39+
})).then(function (data) {
40+
result = data;
41+
done = true;
42+
});
43+
});
44+
45+
waitsFor(function () {
46+
return done;
47+
}, "it should finish", 500);
48+
49+
runs(function () {
50+
expect(result).toEqual([2, 3, 4]);
51+
});
52+
});
53+
54+
it('should queue map work correctly', function () {
55+
var Thread = require('../lib/thread.js');
56+
var p = new Thread([1, 2, 3], { maxWorkers: 2 });
57+
58+
var done = false;
59+
var result = null;
60+
61+
runs(function () {
62+
Q.when(p.map(function (el) {
63+
return el + 1;
64+
})).then(function (data) {
65+
result = data;
66+
done = true;
67+
});
68+
});
69+
70+
waitsFor(function () {
71+
return done;
72+
}, "it should finish", 500);
73+
74+
runs(function () {
75+
expect(result).toEqual([2, 3, 4]);
76+
});
77+
});
78+
79+
it('should chain .map() correctly', function () {
80+
var Thread = require('../lib/thread.js');
81+
var p = new Thread([1, 2, 3]);
82+
83+
var done = false;
84+
var result = null;
85+
86+
runs(function () {
87+
Q.when(p.map(function (el) {
88+
return el + 1;
89+
})).then(function () {
90+
return p.map(function (el) {
91+
return el - 1;
92+
});
93+
}).then(function (data) {
94+
result = data;
95+
done = true;
96+
});
97+
});
98+
99+
waitsFor(function () {
100+
return done;
101+
}, "it should finish", 500);
102+
103+
runs(function () {
104+
expect(result).toEqual([1, 2, 3]);
105+
});
106+
});
107+
108+
it('should mix .spawn and .map() correctly', function () {
109+
var Thread = require('../lib/thread.js');
110+
var p = new Thread([1, 2, 3]);
111+
112+
var done = false;
113+
var result = null;
114+
115+
runs(function () {
116+
Q.when(p.map(function (el) {
117+
return el + 1;
118+
})).then(function() {
119+
return p.spawn(function (data) {
120+
var sum = 0;
121+
for (var i = 0; i < data.length; ++i) {
122+
sum += data[i];
123+
}
124+
return sum;
125+
});
126+
}).then(function (data) {
127+
result = data;
128+
done = true;
129+
});
130+
});
131+
132+
waitsFor(function () {
133+
return done;
134+
}, "it should finish", 500);
135+
136+
runs(function () {
137+
expect(result).toEqual(9);
138+
});
139+
});
140+
141+
it('should execute .reduce() correctly', function () {
142+
var Thread = require('../lib/thread.js');
143+
var p = new Thread([1, 2, 3]);
144+
var done = false;
145+
var result = null;
146+
147+
runs(function () {
148+
Q.when(p.reduce(function (data) {
149+
return data[0] + data[1];
150+
})).then(function (data) {
151+
result = data;
152+
done = true;
153+
});
154+
});
155+
156+
waitsFor(function () {
157+
return done;
158+
}, "it should finish", 500);
159+
160+
runs(function () {
161+
expect(result).toEqual(6);
162+
});
163+
});
164+
165+
it('should process data returned from .then()', function () {
166+
var Thread = require('../lib/thread.js');
167+
var p = new Thread([1, 2, 3]);
168+
169+
var done = false;
170+
var result = null;
171+
172+
runs(function () {
173+
Q.when(p.map(function (el) {
174+
return el + 1;
175+
})).then(function() {
176+
return p.then(function (data) {
177+
var sum = 0;
178+
for (var i = 0; i < data.length; ++i) {
179+
sum += data[i];
180+
}
181+
return sum;
182+
});
183+
}).then(function (data) {
184+
result = data;
185+
done = true;
186+
});
187+
});
188+
189+
waitsFor(function () {
190+
return done;
191+
}, "it should finish", 500);
192+
193+
runs(function () {
194+
expect(result).toEqual(9);
195+
});
196+
});
197+
});

0 commit comments

Comments
 (0)