-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.js
103 lines (93 loc) · 2.42 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Generated by CoffeeScript 1.6.2
(function() {
var MergePool, assert, async, test,
__slice = [].slice;
async = require('async');
assert = require('assert');
MergePool = require('../lib/merge_pool');
exports.test = function(test) {
var check, echo, mp, outputs, push, reset, wait;
mp = new MergePool;
outputs = null;
echo = function(input, cb) {
var op;
console.log("accept input: " + input);
op = function() {
console.log("echo " + (input + 100));
return cb(null, input + 100);
};
return setTimeout(op, 500);
};
wait = function(ms) {
return function(cb) {
console.log("wait " + ms + "ms");
return setTimeout(cb, ms);
};
};
push = function() {
var args, key;
key = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
return function(cb) {
var item, _i, _len;
for (_i = 0, _len = args.length; _i < _len; _i++) {
item = args[_i];
console.log("push " + item + " -> " + key);
mp.run(key, echo, item, function(err, result) {
assert.equal(err, null);
assert.ok(result != null);
console.log("" + item + " -> " + key + " return " + result);
return outputs[key].push(result);
});
}
return cb();
};
};
reset = function(cb) {
console.log("reset");
outputs = {
A: [],
B: []
};
return cb();
};
check = function(expect) {
return function(cb) {
console.log("check");
assert.deepEqual(outputs, expect);
return cb();
};
};
return async.series([
reset, check({
A: [],
B: []
}), push('A', 1, 3, 5), push('B', 2, 4), push('A', 7), check({
A: [],
B: []
}), wait(1000), check({
A: [101, 101, 101, 101],
B: [102, 102]
}), reset, check({
A: [],
B: []
}), push('A', 9), push('B', 6, 8, 10), push('A', 11, 13), check({
A: [],
B: []
}), wait(1000), check({
A: [109, 109, 109],
B: [106, 106, 106]
})
], function(err) {
assert.equal(err, null);
return test.done();
});
};
if (require.main === module) {
test = {
done: function() {
return console.log("test done");
}
};
exports.test(test);
}
}).call(this);