From b2000011ac9efc3451de908d43afb6460334013d Mon Sep 17 00:00:00 2001 From: charlierudolph Date: Mon, 20 Jul 2015 09:40:51 -0700 Subject: convert compose tests to mocha --- mocha_test/compose.js | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ test/test-async.js | 87 --------------------------------------------------- 2 files changed, 87 insertions(+), 87 deletions(-) create mode 100644 mocha_test/compose.js diff --git a/mocha_test/compose.js b/mocha_test/compose.js new file mode 100644 index 0000000..e557347 --- /dev/null +++ b/mocha_test/compose.js @@ -0,0 +1,87 @@ +var async = require('../lib/async'); +var expect = require('chai').expect; + +describe('compose', function(){ + context('all functions succeed', function(){ + it('yields the result of the composition of the functions', function(done){ + var add2 = function (n, cb) { + setTimeout(function () { + cb(null, n + 2); + }); + }; + var mul3 = function (n, cb) { + setTimeout(function () { + cb(null, n * 3); + }); + }; + var add1 = function (n, cb) { + setTimeout(function () { + cb(null, n + 1); + }); + }; + var add2mul3add1 = async.compose(add1, mul3, add2); + add2mul3add1(3, function (err, result) { + expect(err).to.not.exist; + expect(result).to.eql(16); + done(); + }); + }); + }); + + context('a function errors', function(){ + it('yields the error and does not call later functions', function(done){ + var add1called = false; + var mul3error = new Error('mul3 error') + var add2 = function (n, cb) { + setTimeout(function () { + cb(null, n + 2); + }); + }; + var mul3 = function (n, cb) { + setTimeout(function () { + cb(mul3error); + }); + }; + var add1 = function (n, cb) { + add1called = true; + setTimeout(function () { + cb(null, n + 1); + }); + }; + var add2mul3add1 = async.compose(add1, mul3, add2); + add2mul3add1(3, function (err, result) { + expect(err).to.eql(mul3error); + expect(result).to.not.exist; + expect(add1called).to.be.false; + done(); + }); + }); + }); + + it('calls each function with the binding of the composed function', function(done){ + var context = {}; + var add2Context = null; + var mul3Context = null; + + var add2 = function (n, cb) { + add2Context = this; + setTimeout(function () { + cb(null, n + 2); + }); + }; + var mul3 = function (n, cb) { + mul3Context = this; + setTimeout(function () { + cb(null, n * 3); + }); + }; + var add2mul3 = async.compose(mul3, add2); + add2mul3.call(context, 3, function (err, result) { + expect(err).to.not.exist; + expect(result).to.eql(15); + expect(add2Context).to.equal(context); + expect(mul3Context).to.equal(context); + done(); + }); + }); +}); diff --git a/test/test-async.js b/test/test-async.js index e9e5663..dc7d949 100755 --- a/test/test-async.js +++ b/test/test-async.js @@ -183,93 +183,6 @@ exports['applyEach partial application'] = function (test) { }); }; -exports['compose'] = function (test) { - test.expect(5); - var add2 = function (n, cb) { - test.equal(n, 3); - setTimeout(function () { - cb(null, n + 2); - }, 50); - }; - var mul3 = function (n, cb) { - test.equal(n, 5); - setTimeout(function () { - cb(null, n * 3); - }, 15); - }; - var add1 = function (n, cb) { - test.equal(n, 15); - setTimeout(function () { - cb(null, n + 1); - }, 100); - }; - var add2mul3add1 = async.compose(add1, mul3, add2); - add2mul3add1(3, function (err, result) { - if (err) { - return test.done(err); - } - test.ok(err === null, err + " passed instead of 'null'"); - test.equal(result, 16); - test.done(); - }); -}; - -exports['compose error'] = function (test) { - test.expect(3); - var testerr = new Error('test'); - - var add2 = function (n, cb) { - test.equal(n, 3); - setTimeout(function () { - cb(null, n + 2); - }, 50); - }; - var mul3 = function (n, cb) { - test.equal(n, 5); - setTimeout(function () { - cb(testerr); - }, 15); - }; - var add1 = function (n, cb) { - test.ok(false, 'add1 should not get called'); - setTimeout(function () { - cb(null, n + 1); - }, 100); - }; - var add2mul3add1 = async.compose(add1, mul3, add2); - add2mul3add1(3, function (err) { - test.equal(err, testerr); - test.done(); - }); -}; - -exports['compose binding'] = function (test) { - test.expect(4); - var testcontext = {name: 'foo'}; - - var add2 = function (n, cb) { - test.equal(this, testcontext); - setTimeout(function () { - cb(null, n + 2); - }, 50); - }; - var mul3 = function (n, cb) { - test.equal(this, testcontext); - setTimeout(function () { - cb(null, n * 3); - }, 15); - }; - var add2mul3 = async.compose(mul3, add2); - add2mul3.call(testcontext, 3, function (err, result) { - if (err) { - return test.done(err); - } - test.equal(this, testcontext); - test.equal(result, 15); - test.done(); - }); -}; - exports['seq'] = function (test) { test.expect(5); var add2 = function (n, cb) { -- cgit v1.2.1 From 3735d9f5c1bfe4e81c8c116539f51a63e43152a1 Mon Sep 17 00:00:00 2001 From: charlierudolph Date: Mon, 20 Jul 2015 09:42:08 -0700 Subject: remove empty line --- mocha_test/compose.js | 1 - 1 file changed, 1 deletion(-) diff --git a/mocha_test/compose.js b/mocha_test/compose.js index e557347..27b1869 100644 --- a/mocha_test/compose.js +++ b/mocha_test/compose.js @@ -62,7 +62,6 @@ describe('compose', function(){ var context = {}; var add2Context = null; var mul3Context = null; - var add2 = function (n, cb) { add2Context = this; setTimeout(function () { -- cgit v1.2.1