diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-09-05 22:43:38 -0400 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2017-09-05 22:43:38 -0400 |
commit | e7383cc38bf2182e5ab95f30d639fe4a0317fd51 (patch) | |
tree | 5d2ebb3304dc5e7ba16e360c7940e4af4e49b272 /__tests__ | |
parent | 83983efa99d910a97a72fc8b00dd9d7eb8829368 (diff) |
Implement bonus division
Diffstat (limited to '__tests__')
-rw-r--r-- | __tests__/dice.test.js | 41 | ||||
-rw-r--r-- | __tests__/lexer.test.js | 12 | ||||
-rw-r--r-- | __tests__/parser.test.js | 12 |
3 files changed, 65 insertions, 0 deletions
diff --git a/__tests__/dice.test.js b/__tests__/dice.test.js index 375c9ad..9c03a48 100644 --- a/__tests__/dice.test.js +++ b/__tests__/dice.test.js @@ -9,6 +9,7 @@ const { bonusAdd, bonusSubtract, bonusMultiply, + bonusDivide, negative, explodeAbove, explodeUnder, @@ -503,6 +504,46 @@ describe('bonusMultiply', () => { }) }) +describe('bonusDivide', () => { + describe('1d20/3', () => { + const die = bonusDivide(d(constant(1), constant(20)), constant(3)) + testDie(die, { + diceCount: 1, + average: { + average: 3.15 + }, + variance: { + variance: 3.73 + }, + bounds: { + low: 0, + high: 6, + expectLow: true, + expectHigh: true + } + }) + }) + + describe('3d4/2', () => { + const die = bonusDivide(d(constant(3), constant(4)), constant(2)) + testDie(die, { + diceCount: 3, + average: { + average: 3 + }, + variance: { + variance: 1.5 + }, + bounds: { + low: 0, + high: 6, + expectLow: true, + expectHigh: true + } + }) + }) +}) + describe('negative', () => { describeBasicDie(1, 6, defaultNumberRolls, true) describeBasicDie(0, 6, defaultNumberRolls, true) diff --git a/__tests__/lexer.test.js b/__tests__/lexer.test.js index 31150bc..7124746 100644 --- a/__tests__/lexer.test.js +++ b/__tests__/lexer.test.js @@ -253,6 +253,18 @@ describe('lex', () => { }) }) + describe('bonusDivide', () => { + test('3d4/1', () => { + expect(lex('3d4/1')).toEqual([ + { type: 'constant', value: 3 }, + { type: 'd' }, + { type: 'constant', value: 4 }, + { type: 'divide' }, + { type: 'constant', value: 1 } + ]) + }) + }) + describe('again', () => { test('6A3d6', () => { expect(lex('6A3d6')).toEqual([ diff --git a/__tests__/parser.test.js b/__tests__/parser.test.js index 5580b4c..3c9f6ec 100644 --- a/__tests__/parser.test.js +++ b/__tests__/parser.test.js @@ -165,6 +165,18 @@ describe('parse', () => { }) }) + it('parses divisional bonuses', () => { + expect(parse('3d4/1')).toEqual({ + type: 'bonusDivide', + left: { + type: 'd', + left: { type: 'constant', value: 3 }, + right: { type: 'constant', value: 4 } + }, + right: { type: 'constant', value: 1 } + }) + }) + test('bonus binds stronger than addition', () => { expect(parse('2d6 + 2d6+2d6')).toEqual({ type: 'add', |