UNPKG

labyrinth-game-logic

Version:

A libary that implements the boardgame labyrinth and exposes the functionality to create and interact with games

160 lines (145 loc) 4.71 kB
import { BoardPosition } from "./BoardPosition"; import { PlayerState } from "./PlayerState"; import { Treasure } from "./Treasure"; test("remainingTreasureCount", () => { const playerState = new PlayerState( [new Treasure(0), new Treasure(1)], [new Treasure(0), new Treasure(1), new Treasure(2), new Treasure(3)], null, new BoardPosition(0, 0) ); expect(playerState.remainingTreasureCount).toBe(4); }); test("foundTreasureCount", () => { const playerState = new PlayerState( [new Treasure(0), new Treasure(1)], [new Treasure(0), new Treasure(1), new Treasure(2), new Treasure(3)], null, new BoardPosition(0, 0) ); expect(playerState.foundTreasureCount).toBe(2); }); test("getFoundTreasure", () => { const treasure = new Treasure(1); const playerState = new PlayerState( [treasure, new Treasure(1)], [new Treasure(0), new Treasure(1), new Treasure(2), new Treasure(3)], null, new BoardPosition(0, 0) ); expect(playerState.getFoundTreasure(0)).toBe(treasure); }); test("setPosition", () => { const positionA = new BoardPosition(0, 1); let playerState = new PlayerState([], [], null, positionA); expect(playerState.position).toBe(positionA); const positionB = new BoardPosition(0, 2); playerState = playerState.setPosition(positionB); expect(playerState.position).toBe(positionB); }); test("collectTreasure", () => { const currentTreasure = new Treasure(0); let playerState = new PlayerState( [], [new Treasure(1)], currentTreasure, new BoardPosition(0, 0) ); expect(playerState.currentTreasure).toBe(currentTreasure); expect(playerState.remainingTreasureCount).toBe(2); playerState = playerState.collectTreasure(currentTreasure); expect(playerState.currentTreasure?.equals(new Treasure(1))).toBe(true); expect(playerState.foundTreasureCount).toBe(1); expect(playerState.remainingTreasureCount).toBe(1); }); test("removeLastTreasure", () => { const currentTreasure = new Treasure(0); const foundTreasure = new Treasure(1); let playerState = new PlayerState( [foundTreasure], [], currentTreasure, new BoardPosition(0, 0) ); expect(playerState.currentTreasure).toBe(currentTreasure); expect(playerState.foundTreasureCount).toBe(1); playerState = playerState.removeLastTreasure(); expect(playerState.foundTreasureCount).toBe(0); expect(playerState.currentTreasure).toBe(foundTreasure); expect(playerState.remainingTreasureCount).toBe(2); }); test("removeLastTreasureEmpty", () => { let playerState = new PlayerState([], [], null, new BoardPosition(0, 0)); expect(playerState.currentTreasure).toBe(null); expect(playerState.foundTreasureCount).toBe(0); expect(playerState.remainingTreasureCount).toBe(0); playerState = playerState.removeLastTreasure(); expect(playerState.foundTreasureCount).toBe(0); expect(playerState.currentTreasure).toBe(null); expect(playerState.remainingTreasureCount).toBe(0); }); test("equals", () => { const a = new PlayerState( [new Treasure(1)], [new Treasure(2)], new Treasure(0), new BoardPosition(0, 0) ); const b = new PlayerState( [new Treasure(1)], [new Treasure(2)], new Treasure(0), new BoardPosition(0, 0) ); const c = new PlayerState( [new Treasure(1)], [new Treasure(3)], new Treasure(0), new BoardPosition(0, 0) ); const d = new PlayerState( [new Treasure(1)], [new Treasure(2)], new Treasure(0), new BoardPosition(1, 0) ); const e = new PlayerState( [new Treasure(1)], [new Treasure(2)], new Treasure(0), new BoardPosition(0, 0) ); const f = new PlayerState( [new Treasure(1)], [new Treasure(2)], new Treasure(2), new BoardPosition(0, 0) ); const g = new PlayerState( [new Treasure(1), new Treasure(2)], [new Treasure(2)], new Treasure(2), new BoardPosition(0, 0) ); const h = new PlayerState( [new Treasure(1), new Treasure(3)], [new Treasure(2)], new Treasure(2), new BoardPosition(0, 0) ); const i = new PlayerState( [new Treasure(1), new Treasure(3)], [new Treasure(2), new Treasure(1)], new Treasure(2), new BoardPosition(0, 0) ); expect(a.equals(b)).toBe(true); expect(b.equals(a)).toBe(true); expect(b.equals(c)).toBe(false); expect(c.equals(b)).toBe(false); expect(d.equals(e)).toBe(false); expect(e.equals(f)).toBe(false); expect(f.equals(g)).toBe(false); expect(g.equals(h)).toBe(false); expect(h.equals(i)).toBe(false); });