refactor(stats): Math helpers ES2015 module

This commit is contained in:
Sabe Jones
2015-11-17 15:41:26 -05:00
parent 8b7f50bfcf
commit 4bf20959dd
3 changed files with 121 additions and 57 deletions

View File

@@ -0,0 +1,58 @@
var sinon = require('sinon');
var chai = require("chai")
chai.use(require("sinon-chai"))
var expect = chai.expect
var shared = require('../../common/script/index.js');
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('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));
});
});
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);
});
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('provides a different curve if a halfway point is defined', function() {
expect(shared.diminishingReturns(BONUS,MAXIMUM,HALFWAY)).to.not.eql(shared.diminishingReturns(BONUS,MAXIMUM));
});
});
});