Pathologic was missing because of a .git folder inside.
[yaffs-website] / node_modules / pend / test.js
1 var assert = require('assert');
2 var Pend = require('./');
3
4 var tests = [
5   {
6     name: "basic",
7     fn: testBasic,
8   },
9   {
10     name: "max",
11     fn: testWithMax,
12   },
13   {
14     name: "callback twice",
15     fn: testCallbackTwice,
16   },
17   {
18     name: "calling wait twice",
19     fn: testCallingWaitTwice,
20   },
21   {
22     name: "hold()",
23     fn: testHoldFn,
24   },
25 ];
26 var testCount = tests.length;
27
28 doOneTest();
29
30 function doOneTest() {
31   var test = tests.shift();
32   if (!test) {
33     console.log(testCount + " tests passed.");
34     return;
35   }
36   process.stdout.write(test.name + "...");
37   test.fn(function() {
38     process.stdout.write("OK\n");
39     doOneTest();
40   });
41 }
42
43 function testBasic(cb) {
44   var pend = new Pend();
45   var results = [];
46   pend.go(function(cb) {
47     results.push(1);
48     setTimeout(function() {
49       results.push(3);
50       cb();
51     }, 500);
52   });
53   pend.go(function(cb) {
54     results.push(2);
55     setTimeout(function() {
56       results.push(4);
57       cb();
58     }, 1000);
59   });
60   pend.wait(function(err) {
61     assert.deepEqual(results, [1,2,3,4]);
62     cb();
63   });
64   assert.deepEqual(results, [1, 2]);
65 }
66
67 function testWithMax(cb) {
68   var pend = new Pend();
69   var results = [];
70   pend.max = 2;
71   pend.go(function(cb) {
72     results.push('a');
73     setTimeout(function() {
74       results.push(1);
75       cb();
76     }, 500);
77   });
78   pend.go(function(cb) {
79     results.push('b');
80     setTimeout(function() {
81       results.push(1);
82       cb();
83     }, 500);
84   });
85   pend.go(function(cb) {
86     results.push('c');
87     setTimeout(function() {
88       results.push(2);
89       cb();
90     }, 100);
91   });
92   pend.wait(function(err) {
93     assert.deepEqual(results, ['a', 'b', 1, 'c', 1, 2]);
94     cb();
95   });
96   assert.deepEqual(results, ['a', 'b']);
97 }
98
99 function testCallbackTwice(cb) {
100   var pend = new Pend();
101   pend.go(function(cb) {
102     setTimeout(cb, 100);
103   });
104   pend.go(function(cb) {
105     cb();
106     assert.throws(cb, /callback called twice/);
107   });
108   pend.wait(cb);
109 }
110
111 function testCallingWaitTwice(cb) {
112   var pend = new Pend();
113   pend.go(function(cb) {
114     setTimeout(cb, 100);
115   });
116   pend.wait(function() {
117     pend.go(function(cb) {
118       setTimeout(cb, 50);
119     });
120     pend.go(function(cb) {
121       setTimeout(cb, 10);
122     });
123     pend.go(function(cb) {
124       setTimeout(cb, 20);
125     });
126     pend.wait(cb);
127   });
128 }
129
130 function testHoldFn(cb) {
131   var pend = new Pend();
132   setTimeout(pend.hold(), 100);
133   pend.go(function(cb) {
134     cb();
135   });
136   pend.wait(cb);
137 }