From 389126fb7c369f71fc99c7d8c777f12e5d18566c Mon Sep 17 00:00:00 2001 From: rynodivino Date: Mon, 20 Jan 2014 19:19:56 -0800 Subject: [PATCH] organize code differently. matuzi style. --- lib/growth.js | 35 +++++++++++++++++++++++++++++++++++ lib/roic.js | 4 ++++ lib/util.js | 44 +++++--------------------------------------- test/lib/growth.js | 9 +++++++++ test/lib/roic.js | 29 +++++++++++++++++++++++++++++ test/lib/util.js | 2 +- 6 files changed, 83 insertions(+), 40 deletions(-) create mode 100644 lib/growth.js create mode 100644 lib/roic.js create mode 100644 test/lib/growth.js create mode 100644 test/lib/roic.js diff --git a/lib/growth.js b/lib/growth.js new file mode 100644 index 0000000..4f4bfe7 --- /dev/null +++ b/lib/growth.js @@ -0,0 +1,35 @@ +module.exports = function(prev, current, years) { + var yrs = years || 1, + growth, + doubles = 0, + doubleRate = .0, + square = prev; + + if (yrs === 1) { + growth = ((current-prev)/prev); + square = prev * 2; + while (prev < square) { + doubles++; + prev = prev + (prev * growth); + if (prev/square > .85) { + prev = square; + } + } + return 72/doubles; + } + + while (square < current) { + doubles++; + square = square * 2; + } + + if (current/square < .85) { + doubles--; + if (doubles === 1 && yrs > 1) { + yrs--; + } + } + + doubleRate = yrs/(doubles || 1); + return 72/doubleRate; +}; diff --git a/lib/roic.js b/lib/roic.js new file mode 100644 index 0000000..a2f04ff --- /dev/null +++ b/lib/roic.js @@ -0,0 +1,4 @@ +// Assumes costs are starting capital +module.exports = function(capital, sales, costs) { + return Math.floor(100 * (sales - costs)/capital); +}; diff --git a/lib/util.js b/lib/util.js index 961406d..587ae1d 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,42 +1,8 @@ +var roic = require('./roic.js'), + growth = require('./growth.js'); + module.exports = { // Assumes costs are starting capital - roic: function(capital, sales, costs) { - return 100 * (sales - costs)/capital; - }, - - growth: function(prev, current, years) { - var yrs = years || 1, - growth, - doubles = 0, - doubleRate = .0, - square = prev; - - if (yrs === 1) { - growth = ((current-prev)/prev); - square = prev * 2; - while (prev < square) { - doubles++; - prev = prev + (prev * growth); - if (prev/square > .85) { - prev = square; - } - } - return 72/doubles; - } - - while (square < current) { - doubles++; - square = square * 2; - } - - if (current/square < .85) { - doubles--; - if (doubles === 1 && yrs > 1) { - yrs--; - } - } - - doubleRate = yrs/(doubles || 1); - return 72/doubleRate; - } + "roic": roic, + "growth": growth }; diff --git a/test/lib/growth.js b/test/lib/growth.js new file mode 100644 index 0000000..220a1b5 --- /dev/null +++ b/test/lib/growth.js @@ -0,0 +1,9 @@ +var growth = require('../../lib/growth.js'), + test = require('tap').test; +/** +test("Test growth calculation.", function(t) { + var result = growth(50, 100, 20); + t.equal(result, 160, "roic for da da da"); + t.end(); +}); +*/ diff --git a/test/lib/roic.js b/test/lib/roic.js new file mode 100644 index 0000000..efb00e7 --- /dev/null +++ b/test/lib/roic.js @@ -0,0 +1,29 @@ +/****************************************************** +** Assumes costs are starting capital +******************************************************* + module.exports = function(capital, sales, costs) { + return 100 * (sales - costs)/capital; + }; +*/ + +var roic = require('../../lib/roic.js'), + test = require('tap').test; + +test("Test roic calculation.", function(t) { + var result = roic(50, 100, 20); + t.equal(result, 160, "roic for da da da"); + t.end(); +}); + +test("Test roic calculation with non-integers mixed in.", function(t) { + var result = roic(50.01, 20.02, -.05); + var expected = Math.floor(100 * (20.07 / 50.01)); + t.equal(result, expected, "roic for non integers."); + t.end(); +}); + +test("Test roic calculation.", function(t) { + var result = roic('50', '100', '20'); + t.equal(result, 160, "roic for da da da"); + t.end(); +}); diff --git a/test/lib/util.js b/test/lib/util.js index 7df860e..9b6ccfe 100644 --- a/test/lib/util.js +++ b/test/lib/util.js @@ -1,9 +1,9 @@ var calculator = require('../../lib/util.js'), test = require('tap').test; - test("Test roic calculation.", function(t) { var result = calculator.roic(50, 100, 20); t.equal(result, 160, "roic for da da da"); t.end(); }); +