m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/__tests__
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-22 18:01:48 -0400
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-22 18:15:15 -0400
commit1426322eb4898cd49310c1dc30cdfc8ad8e73402 (patch)
treec22776bb6af5180d41b90d0ceb7c06c03c66dd9b /__tests__
parent12a632d2772da84043d4335eeabbca505efd760f (diff)
Parse negative bonuses
Diffstat (limited to '__tests__')
-rw-r--r--__tests__/dice.test.js43
-rw-r--r--__tests__/parser.test.js12
2 files changed, 54 insertions, 1 deletions
diff --git a/__tests__/dice.test.js b/__tests__/dice.test.js
index 3073fee..6ff86e7 100644
--- a/__tests__/dice.test.js
+++ b/__tests__/dice.test.js
@@ -8,7 +8,8 @@ const {
explode,
keepHigh,
keepLow,
- bonusAdd
+ bonusAdd,
+ bonusSubtract
} = require('../src/dice.js')
const defaultNumberRolls = 500
@@ -493,3 +494,43 @@ describe('bonusAdd', () => {
})
})
})
+
+describe('bonusSubtract', () => {
+ describe('1d20-3', () => {
+ const die = bonusSubtract(d(constant(1), constant(20)), constant(3))
+ testDie(die, {
+ diceCount: 1,
+ average: {
+ average: 7.5
+ },
+ variance: {
+ variance: 33.25
+ },
+ bounds: {
+ low: -2,
+ high: 17,
+ expectLow: true,
+ expectHigh: true
+ }
+ })
+ })
+
+ describe('3d4-1', () => {
+ const die = bonusSubtract(d(constant(3), constant(4)), constant(1))
+ testDie(die, {
+ diceCount: 3,
+ average: {
+ average: 4.5
+ },
+ variance: {
+ variance: 3.75
+ },
+ bounds: {
+ low: 0,
+ high: 9,
+ expectLow: true,
+ expectHigh: true
+ }
+ })
+ })
+})
diff --git a/__tests__/parser.test.js b/__tests__/parser.test.js
index 873972b..54e1da7 100644
--- a/__tests__/parser.test.js
+++ b/__tests__/parser.test.js
@@ -163,6 +163,18 @@ describe('parse', () => {
})
})
+ it('parses negative bonuses', () => {
+ expect(parse('3d4-1')).toEqual({
+ type: 'bonusSubtract',
+ left: {
+ type: 'd',
+ left: { type: 'constant', value: 3 },
+ right: { type: 'constant', value: 4 }
+ },
+ right: { type: 'constant', value: 1 }
+ })
+ })
+
describe('parsing parentheses', () => {
test('(1d6)d6', () => {
expect(parse('(1d6)d6')).toEqual({