From 6b18e720a106e8904e84a6e09b2d6645c8dee053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20R=C3=BCmpelein?= Date: Thu, 31 Dec 2020 02:27:21 +0100 Subject: [PATCH] Additional tests and features as per Request. --- spec/support/ds4rolls.spec.ts | 24 ++++++++++++++++++++++++ src/module/rolls/roll-executor.ts | 3 ++- src/module/rolls/roll-provider.ts | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/spec/support/ds4rolls.spec.ts b/spec/support/ds4rolls.spec.ts index 844ba622..e729b6e2 100644 --- a/spec/support/ds4rolls.spec.ts +++ b/spec/support/ds4rolls.spec.ts @@ -244,3 +244,27 @@ describe("DS4 Rools with multiple dice and min/max modifiers.", () => { ); }); }); + +describe("DS4 Rools with multiple dice and fail modifiers.", () => { + it("Should do a crit fail on `19` for first roll.", () => { + const rollProvider: RollProvider = jasmine.createSpyObj("rollProvider", ["getNextRolls"]); + + rollProvider.getNextRolls = jasmine.createSpy("getNextRolls").and.returnValue([19, 15, 6]); + + expect(rollCheckMultipleDice(48, { minCritFail: 19 } as RollOptions, rollProvider)).toEqual( + new RollResult(0, RollResultStatus.CRITICAL_FAILURE, [19, 15, 6]), + ); + }); +}); + +describe("DS4 Rools with multiple dice and success modifiers.", () => { + it("Should succeed with all rolls crit successes (1 and 2).", () => { + const rollProvider: RollProvider = jasmine.createSpyObj("rollProvider", ["getNextRolls"]); + + rollProvider.getNextRolls = jasmine.createSpy("getNextRolls").and.returnValue([2, 1, 2]); + + expect(rollCheckMultipleDice(48, { maxCritSucc: 2 } as RollOptions, rollProvider)).toEqual( + new RollResult(48, RollResultStatus.SUCCESS, [2, 2, 1]), + ); + }); +}); diff --git a/src/module/rolls/roll-executor.ts b/src/module/rolls/roll-executor.ts index 1d383a62..204f5edc 100644 --- a/src/module/rolls/roll-executor.ts +++ b/src/module/rolls/roll-executor.ts @@ -83,7 +83,8 @@ export function rollCheckMultipleDice( } export class RollOptions { - constructor(public maxCritSucc: number = 1, public minCritFail: number = 20) {} + public maxCritSucc = 1; + public minCritFail = 20; } export class RollResult { diff --git a/src/module/rolls/roll-provider.ts b/src/module/rolls/roll-provider.ts index 8aad7c82..2e4982e0 100644 --- a/src/module/rolls/roll-provider.ts +++ b/src/module/rolls/roll-provider.ts @@ -12,5 +12,5 @@ export class DS4RollProvider { export interface RollProvider { getNextRoll(): number; - getNextRolls(number): Array; + getNextRolls(number: number): Array; }