diff options
Diffstat (limited to 'test/transform.js')
-rw-r--r-- | test/transform.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/transform.js b/test/transform.js new file mode 100644 index 0000000..a02b54b --- /dev/null +++ b/test/transform.js @@ -0,0 +1,65 @@ +var async = require('../lib'); +var expect = require('chai').expect; + +describe('transform', function() { + + it('transform implictly determines memo if not provided', function(done) { + async.transform([1,2,3], function(memo, x, v, callback){ + memo.push(x + 1); + callback(); + }, function(err, result){ + expect(result).to.eql([2, 3, 4]); + done(); + }); + }); + + it('transform async with object memo', function(done) { + async.transform([1,3,2], {}, function(memo, v, k, callback){ + setTimeout(function() { + memo[k] = v; + callback(); + }); + }, function(err, result) { + expect(err).to.equal(null); + expect(result).to.eql({ + 0: 1, + 1: 3, + 2: 2 + }); + done(); + }); + }); + + it('transform iterating object', function(done) { + async.transform({a: 1, b: 3, c: 2}, function(memo, v, k, callback){ + setTimeout(function() { + memo[k] = v + 1; + callback(); + }); + }, function(err, result) { + expect(err).to.equal(null); + expect(result).to.eql({a: 2, b: 4, c: 3}); + done(); + }); + }); + + it('transform error', function(done) { + async.transform([1,2,3], function(a, v, k, callback){ + callback('error'); + }, function(err){ + expect(err).to.equal('error'); + done(); + }); + }); + + it('transform with two arguments', function(done) { + try { + async.transform([1, 2, 3], function (a, v, k, callback) { + callback(); + }); + done(); + } catch (e) { + expect.fail(); + } + }); +}); |