111 lines
3.3 KiB
TypeScript
111 lines
3.3 KiB
TypeScript
/* eslint-disable @typescript-eslint/semi */
|
|
import { DnDCharacter } from "./dnd-character";
|
|
|
|
describe("Ability modifier", () => {
|
|
it("Ability modifier for score 3 is -4", () => {
|
|
expect(DnDCharacter.getModifierFor(3)).toEqual(-4);
|
|
});
|
|
|
|
it("Ability modifier for score 4 is -3", () => {
|
|
expect(DnDCharacter.getModifierFor(4)).toEqual(-3);
|
|
});
|
|
|
|
it("Ability modifier for score 5 is -3", () => {
|
|
expect(DnDCharacter.getModifierFor(5)).toEqual(-3);
|
|
});
|
|
|
|
it("Ability modifier for score 6 is -2", () => {
|
|
expect(DnDCharacter.getModifierFor(6)).toEqual(-2);
|
|
});
|
|
|
|
it("Ability modifier for score 7 is -2", () => {
|
|
expect(DnDCharacter.getModifierFor(7)).toEqual(-2);
|
|
});
|
|
|
|
it("Ability modifier for score 8 is -1", () => {
|
|
expect(DnDCharacter.getModifierFor(8)).toEqual(-1);
|
|
});
|
|
|
|
it("Ability modifier for score 9 is -1", () => {
|
|
expect(DnDCharacter.getModifierFor(9)).toEqual(-1);
|
|
});
|
|
|
|
it("Ability modifier for score 10 is 0", () => {
|
|
expect(DnDCharacter.getModifierFor(10)).toEqual(0);
|
|
});
|
|
|
|
it("Ability modifier for score 11 is 0", () => {
|
|
expect(DnDCharacter.getModifierFor(11)).toEqual(0);
|
|
});
|
|
|
|
it("Ability modifier for score 12 is 1", () => {
|
|
expect(DnDCharacter.getModifierFor(12)).toEqual(1);
|
|
});
|
|
|
|
it("Ability modifier for score 13 is 1", () => {
|
|
expect(DnDCharacter.getModifierFor(13)).toEqual(1);
|
|
});
|
|
|
|
it("Ability modifier for score 14 is 2", () => {
|
|
expect(DnDCharacter.getModifierFor(14)).toEqual(2);
|
|
});
|
|
|
|
it("Ability modifier for score 15 is 2", () => {
|
|
expect(DnDCharacter.getModifierFor(15)).toEqual(2);
|
|
});
|
|
|
|
it("Ability modifier for score 16 is 3", () => {
|
|
expect(DnDCharacter.getModifierFor(16)).toEqual(3);
|
|
});
|
|
|
|
it("Ability modifier for score 17 is 3", () => {
|
|
expect(DnDCharacter.getModifierFor(17)).toEqual(3);
|
|
});
|
|
|
|
it("Ability modifier for score 18 is 4", () => {
|
|
expect(DnDCharacter.getModifierFor(18)).toEqual(4);
|
|
});
|
|
});
|
|
|
|
describe("Ability generator", () => {
|
|
it("Random ability is within range", () => {
|
|
const abilityScore = DnDCharacter.generateAbilityScore();
|
|
expect(abilityScore).toBeGreaterThanOrEqual(3);
|
|
expect(abilityScore).toBeLessThanOrEqual(18);
|
|
});
|
|
});
|
|
|
|
describe("Character creation", () => {
|
|
it("Random character is valid", () => {
|
|
const character = new DnDCharacter();
|
|
|
|
expect(character.hitpoints).toEqual(
|
|
10 + DnDCharacter.getModifierFor(character.constitution)
|
|
);
|
|
|
|
expect(character.strength).toBeGreaterThanOrEqual(3);
|
|
expect(character.strength).toBeLessThanOrEqual(18);
|
|
|
|
expect(character.dexterity).toBeGreaterThanOrEqual(3);
|
|
expect(character.dexterity).toBeLessThanOrEqual(18);
|
|
|
|
expect(character.constitution).toBeGreaterThanOrEqual(3);
|
|
expect(character.constitution).toBeLessThanOrEqual(18);
|
|
|
|
expect(character.intelligence).toBeGreaterThanOrEqual(3);
|
|
expect(character.intelligence).toBeLessThanOrEqual(18);
|
|
|
|
expect(character.wisdom).toBeGreaterThanOrEqual(3);
|
|
expect(character.wisdom).toBeLessThanOrEqual(18);
|
|
|
|
expect(character.charisma).toBeGreaterThanOrEqual(3);
|
|
expect(character.charisma).toBeLessThanOrEqual(18);
|
|
});
|
|
|
|
it("Each ability is only calculated once", () => {
|
|
const character = new DnDCharacter();
|
|
|
|
expect(character.strength === character.strength).toBeTruthy();
|
|
});
|
|
});
|