summaryrefslogtreecommitdiff
path: root/mocha_test/iterator.js
diff options
context:
space:
mode:
Diffstat (limited to 'mocha_test/iterator.js')
-rw-r--r--mocha_test/iterator.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/mocha_test/iterator.js b/mocha_test/iterator.js
new file mode 100644
index 0000000..71c477c
--- /dev/null
+++ b/mocha_test/iterator.js
@@ -0,0 +1,61 @@
+var async = require('../lib');
+var expect = require('chai').expect;
+
+describe('iterator', function() {
+
+ it('iterator', function(done) {
+ var call_order = [];
+ var iterator = async.iterator([
+ function(){call_order.push(1);},
+ function(arg1){
+ expect(arg1).to.equal('arg1');
+ call_order.push(2);
+ },
+ function(arg1, arg2){
+ expect(arg1).to.equal('arg1');
+ expect(arg2).to.equal('arg2');
+ call_order.push(3);
+ }
+ ]);
+ iterator();
+ expect(call_order).to.eql([1]);
+ var iterator2 = iterator();
+ expect(call_order).to.eql([1,1]);
+ var iterator3 = iterator2('arg1');
+ expect(call_order).to.eql([1,1,2]);
+ var iterator4 = iterator3('arg1', 'arg2');
+ expect(call_order).to.eql([1,1,2,3]);
+ expect(iterator4).to.equal(null);
+ done();
+ });
+
+ it('iterator empty array', function(done) {
+ var iterator = async.iterator([]);
+ expect(iterator()).to.equal(null);
+ expect(iterator.next()).to.equal(null);
+ done();
+ });
+
+ it('iterator.next', function(done) {
+ var call_order = [];
+ var iterator = async.iterator([
+ function(){call_order.push(1);},
+ function(arg1){
+ expect(arg1).to.equal('arg1');
+ call_order.push(2);
+ },
+ function(arg1, arg2){
+ expect(arg1).to.equal('arg1');
+ expect(arg2).to.equal('arg2');
+ call_order.push(3);
+ }
+ ]);
+ var fn = iterator.next();
+ var iterator2 = fn('arg1');
+ expect(call_order).to.eql([2]);
+ iterator2('arg1','arg2');
+ expect(call_order).to.eql([2,3]);
+ expect(iterator2.next()).to.equal(null);
+ done();
+ });
+});