m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/__tests__
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-09-05 22:43:38 -0400
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-09-05 22:43:38 -0400
commite7383cc38bf2182e5ab95f30d639fe4a0317fd51 (patch)
tree5d2ebb3304dc5e7ba16e360c7940e4af4e49b272 /__tests__
parent83983efa99d910a97a72fc8b00dd9d7eb8829368 (diff)
Implement bonus division
Diffstat (limited to '__tests__')
-rw-r--r--__tests__/dice.test.js41
-rw-r--r--__tests__/lexer.test.js12
-rw-r--r--__tests__/parser.test.js12
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',