UNPKG

hinoki

Version:

sane, simple dependency injection and more

59 lines (54 loc) 1.7 kB
var test = require('tape'); var Promise = require('bluebird'); var hinoki = require('../lib/hinoki'); test('readme example', function(t) { var source = hinoki.source({ sumFn: function() { return function(xs) { return xs.reduce(function(acc, x) { return acc + x; }, 0); } }, numbersSquared: function(numbers) { return numbers.map(function(x) { return x * x; }); }, numbersSorted: function(numbers) { return numbers.slice().sort(function(a, b) { return a - b; }); }, count: function(numbers) { return numbers.length; }, median: function(numbersSorted, count) { return numbersSorted[Math.round(count / 2)]; }, mean: function(numbers, count, sumFn) { return sumFn(numbers) / count; }, meanOfSquares: function(numbersSquared, count, sumFn) { return sumFn(numbersSquared) / count; }, variance: function(mean, meanOfSquares) { return meanOfSquares - mean * mean; } }); var lifetime = { // TODO shuffle this around numbers: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] }; hinoki(source, lifetime, 'mean') .then(function(mean) { t.equal(mean, 8.8); return hinoki(source, lifetime, ['mean', 'variance', 'numbersSorted']); }) .spread(function(mean, variance, numbersSorted) { console.log('mean', mean); // -> console.log('variance', variance); // -> console.log('numbersSorted', numbersSorted); // -> return hinoki(source, lifetime, function(variance, median) { console.log('variance', variance); // -> console.log('median', median); // -> }); }) .then(function() { t.end(); }); });