1 |
|
2 | var co = require('..');
|
3 | var assert = require('assert');
|
4 |
|
5 | function sleep(ms) {
|
6 | return function(done){
|
7 | setTimeout(done, ms);
|
8 | }
|
9 | }
|
10 |
|
11 | function *work() {
|
12 | yield sleep(50);
|
13 | return 'yay';
|
14 | }
|
15 |
|
16 | describe('co(fn)', function(){
|
17 | describe('with a generator function', function(){
|
18 | it('should wrap with co()', function(done){
|
19 | co(function *(){
|
20 | var a = yield work;
|
21 | var b = yield work;
|
22 | var c = yield work;
|
23 |
|
24 | assert('yay' == a);
|
25 | assert('yay' == b);
|
26 | assert('yay' == c);
|
27 |
|
28 | var res = yield [work, work, work];
|
29 | res.should.eql(['yay', 'yay', 'yay']);
|
30 | })(done);
|
31 | })
|
32 |
|
33 | it('should pass arguments into generator', function(done) {
|
34 | co(function *(a, b) {
|
35 | assert('yay' == a);
|
36 | assert('wahoo' == b);
|
37 | })('yay', 'wahoo', done);
|
38 | });
|
39 |
|
40 | it('should pass arguments into generator with yields', function(done) {
|
41 | co(function *(a, b) {
|
42 | assert('yay' == a);
|
43 | yield work
|
44 | assert('wahoo' == b);
|
45 | })('yay', 'wahoo', done);
|
46 | });
|
47 | })
|
48 | })
|