From 31b68219d1f89a48c9b54f9b4f1c5d50cde72d62 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Wed, 18 Nov 2015 15:06:55 -0500 Subject: [PATCH] refactor(stats): Address PR comments --- common/script/index.js | 6 +-- common/script/statHelpers.js | 21 ++------ test/common/statHelpers.test.js | 92 ++++++++++++++++++--------------- 3 files changed, 57 insertions(+), 62 deletions(-) diff --git a/common/script/index.js b/common/script/index.js index 9bb5c8312e..a608aa5f9c 100644 --- a/common/script/index.js +++ b/common/script/index.js @@ -13,12 +13,12 @@ api = module.exports = {}; api.i18n = i18n; -import statHelpers from './statHelpers.js' +import * as statHelpers from './statHelpers'; api.maxLevel = statHelpers.maxLevel; api.capByLevel = statHelpers.capByLevel; -api.maxHealth = statHelpers.maxHealth; -api.tnl = statHelpers.tnl; +api.maxHealth = statHelpers.MAX_HEALTH; +api.tnl = statHelpers.toNextLevel; api.diminishingReturns = statHelpers.diminishingReturns; $w = api.$w = function(s) { diff --git a/common/script/statHelpers.js b/common/script/statHelpers.js index 3e2ff7a785..3fc5488eb9 100644 --- a/common/script/statHelpers.js +++ b/common/script/statHelpers.js @@ -4,9 +4,9 @@ ------------------------------------------------------ */ -const maxLevel = 100; +export const maxLevel = 100; -function capByLevel (lvl) { +export function capByLevel (lvl) { if (lvl > maxLevel) { return maxLevel; } else { @@ -20,7 +20,7 @@ function capByLevel (lvl) { ------------------------------------------------------ */ -const maxHealth = 50; +export const MAX_HEALTH = 50; /* ------------------------------------------------------ @@ -28,7 +28,7 @@ const maxHealth = 50; ------------------------------------------------------ */ -function tnl (lvl) { +export function toNextLevel (lvl) { return Math.round((Math.pow(lvl, 2) * 0.25 + 10 * lvl + 139.75) / 10) * 10; } @@ -39,17 +39,6 @@ function tnl (lvl) { {halfway} (optional) the point at which the graph starts bending */ -function diminishingReturns (bonus, max, halfway) { - if (!halfway) { - halfway = max / 2; - } +export function diminishingReturns (bonus, max, halfway = max/2) { return max * (bonus / (bonus + halfway)); } - -export default { - maxLevel, - capByLevel, - maxHealth, - tnl, - diminishingReturns, -}; diff --git a/test/common/statHelpers.test.js b/test/common/statHelpers.test.js index d757d40381..6595c53fc4 100644 --- a/test/common/statHelpers.test.js +++ b/test/common/statHelpers.test.js @@ -1,58 +1,64 @@ -var sinon = require('sinon'); -var chai = require("chai") -chai.use(require("sinon-chai")) -var expect = chai.expect +import { + maxHealth, + maxLevel, + capByLevel, + tnl, + diminishingReturns, +} from '../../common/script/index'; -var shared = require('../../common/script/index.js'); +describe('helper functions used in stat calculations', () => { -describe('helper functions used in stat calculations', function() { - - var HEALTH_CAP = 50; - var LEVEL_CAP = 100; - var LEVEL = 57; - var BONUS = 600; - var MAXIMUM = 200; - var HALFWAY = 75; - - it('provides a maximum Health value', function() { - expect(shared.maxHealth).to.eql(HEALTH_CAP); - }); - - describe('maximum level cap', function() { - it('returns a maximum level for attribute gain', function() { - expect(shared.maxLevel).to.eql(LEVEL_CAP); - }); - - it('returns level given if below cap', function() { - expect(shared.capByLevel(LEVEL)).to.eql(LEVEL); - }); - - it('returns level given if equal to cap', function() { - expect(shared.capByLevel(LEVEL_CAP)).to.eql(LEVEL_CAP); - }); - - it('returns level cap if above cap', function() { - expect(shared.capByLevel(LEVEL_CAP + LEVEL)).to.eql(LEVEL_CAP); + describe('maxHealth', () => { + it('provides a maximum Health value', () => { + const HEALTH_CAP = 50; + expect(maxHealth).to.eql(HEALTH_CAP); }); }); - describe('Experience to next level', function() { - it('increases Experience target from one level to the next', function() { - expect(shared.tnl(LEVEL + 1)).to.be.greaterThan(shared.tnl(LEVEL)); + const LEVEL_CAP = 100; + const LEVEL = 57; + + describe('maxLevel', () => { + it('returns a maximum level for attribute gain', () => { + expect(maxLevel).to.eql(LEVEL_CAP); }); }); - describe('diminishing returns', function() { - it('provides a value under the maximum, given a bonus and maximum', function() { - expect(shared.diminishingReturns(BONUS,MAXIMUM)).to.be.lessThan(MAXIMUM); + describe('capByLevel', () => { + it('returns level given if below cap', () => { + expect(capByLevel(LEVEL)).to.eql(LEVEL); }); - it('provides a value under the maximum, given a bonus, maximum, and halfway point', function() { - expect(shared.diminishingReturns(BONUS,MAXIMUM,HALFWAY)).to.be.lessThan(MAXIMUM); + it('returns level given if equal to cap', () => { + expect(capByLevel(LEVEL_CAP)).to.eql(LEVEL_CAP); }); - it('provides a different curve if a halfway point is defined', function() { - expect(shared.diminishingReturns(BONUS,MAXIMUM,HALFWAY)).to.not.eql(shared.diminishingReturns(BONUS,MAXIMUM)); + it('returns level cap if above cap', () => { + expect(capByLevel(LEVEL_CAP + LEVEL)).to.eql(LEVEL_CAP); + }); + }); + + describe('toNextLevel', () => { + it('increases Experience target from one level to the next', () => { + expect(tnl(LEVEL + 1)).to.be.greaterThan(shared.tnl(LEVEL)); + }); + }); + + describe('diminishingReturns', () => { + const BONUS = 600; + const MAXIMUM = 200; + const HALFWAY = 75; + + it('provides a value under the maximum, given a bonus and maximum', () => { + expect(diminishingReturns(BONUS, MAXIMUM)).to.be.lessThan(MAXIMUM); + }); + + it('provides a value under the maximum, given a bonus, maximum, and halfway point', () => { + expect(diminishingReturns(BONUS, MAXIMUM, HALFWAY)).to.be.lessThan(MAXIMUM); + }); + + it('provides a different curve if a halfway point is defined', () => { + expect(diminishingReturns(BONUS, MAXIMUM, HALFWAY)).to.not.eql(shared.diminishingReturns(BONUS, MAXIMUM)); }); }); });