diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-08-22 18:01:48 -0400 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-08-22 18:15:15 -0400 |
commit | 1426322eb4898cd49310c1dc30cdfc8ad8e73402 (patch) | |
tree | c22776bb6af5180d41b90d0ceb7c06c03c66dd9b /__tests__ | |
parent | 12a632d2772da84043d4335eeabbca505efd760f (diff) |
Parse negative bonuses
Diffstat (limited to '__tests__')
-rw-r--r-- | __tests__/dice.test.js | 43 | ||||
-rw-r--r-- | __tests__/parser.test.js | 12 |
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({ |