-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
test-async.js
80 lines (76 loc) · 2.12 KB
/
test-async.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
var async = require('async');
exports.testRequires = function(test){
var fn = function(){return 'test';};
test.same(
async.requires(['task1','task2'], fn),
{requires: ['task1','task2'], run: fn}
);
test.done();
};
exports.testAuto = function(test){
var callOrder = [];
var testdata = [{test: 'test'}];
async.auto({
task1: {
requires: ['task2'],
run: function(task){
setTimeout(function(){
callOrder.push('task1');
task.done();
}, 100);
}
},
task2: function(task){
setTimeout(function(){
callOrder.push('task2');
task.done();
}, 200);
},
task3: {
requires: ['task2'],
run: function(task){
callOrder.push('task3');
task.done();
}
},
task4: {
requires: ['task1', 'task2'],
run: function(task){
callOrder.push('task4');
task.done();
}
}
},
function(err){
test.same(callOrder, ['task2','task3','task1','task4']);
test.done();
});
};
exports.testWaterfall = function(test){
test.expect(6);
var call_order = [];
async.waterfall([
function(callback){
call_order.push('fn1');
process.nextTick(function(){callback('one', 'two');});
},
function(arg1, arg2, callback){
call_order.push('fn2');
test.equals(arg1, 'one');
test.equals(arg2, 'two');
setTimeout(function(){callback(arg1, arg2, 'three');}, 100);
},
function(arg1, arg2, arg3, callback){
call_order.push('fn3');
test.equals(arg1, 'one');
test.equals(arg2, 'two');
test.equals(arg3, 'three');
callback('four');
},
function(arg4, callback){
call_order.push('fn4');
test.same(call_order, ['fn1','fn2','fn3','fn4']);
test.done();
}
]);
};