Add converge

Based on http://ramdajs.com/docs/#converge
This commit is contained in:
Angelos Chalaris
2018-02-07 12:23:04 +02:00
parent d14b19406e
commit da80f53f2b
5 changed files with 55 additions and 4 deletions

View File

@ -0,0 +1,3 @@
const converge = (converger, fns) => (...args) =>
converger(...fns.map(fn => fn.apply(null, args)));
module.exports = converge;

View File

@ -0,0 +1,23 @@
const test = require('tape');
const converge = require('./converge.js');
test('Testing converge', (t) => {
//For more information on all the methods supported by tape
//Please go to https://github.com/substack/tape
t.true(typeof converge === 'function', 'converge is a Function');
const average = converge((a, b) => a / b, [
arr => arr.reduce((a, v) => a + v, 0),
arr => arr.length,
]);
t.equal(average([1, 2, 3, 4, 5, 6, 7]), 4, 'Produces the average of the array');
const strangeConcat = converge((a, b) => a + b, [
x => x.toUpperCase(),
x => x.toLowerCase()]
);
t.equal(strangeConcat('Yodel'), "YODELyodel", 'Produces the strange concatenation');
//t.deepEqual(converge(args..), 'Expected');
//t.equal(converge(args..), 'Expected');
//t.false(converge(args..), 'Expected');
//t.throws(converge(args..), 'Expected');
t.end();
});

View File

@ -1,4 +1,4 @@
Test log for: Wed Feb 07 2018 11:34:35 GMT+0200 (GTB Standard Time)
Test log for: Wed Feb 07 2018 12:22:33 GMT+0200 (GTB Standard Time)
> 30-seconds-of-code@0.0.1 test G:\My Files\git Repositories\30-seconds-of-code
> tape test/**/*.test.js | tap-spec
@ -190,6 +190,12 @@ Test log for: Wed Feb 07 2018 11:34:35 GMT+0200 (GTB Standard Time)
√ composeRight is a Function
√ Performs left-to-right function composition
Testing converge
√ converge is a Function
√ Produces the average of the array
√ Produces the strange concatenation
Testing copyToClipboard
√ copyToClipboard is a Function
@ -1319,7 +1325,6 @@ Test log for: Wed Feb 07 2018 11:34:35 GMT+0200 (GTB Standard Time)
Testing shuffle
√ shuffle is a Function
√ Shuffles the array
Testing similarity
@ -1741,8 +1746,8 @@ Test log for: Wed Feb 07 2018 11:34:35 GMT+0200 (GTB Standard Time)
√ Works with multiple promises
total: 842
passing: 842
total: 844
passing: 844
duration: 2.4s