summaryrefslogtreecommitdiff
path: root/test/transform.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/transform.js')
-rw-r--r--test/transform.js65
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();
+ }
+ });
+});