labyrinth-game-logic
Version:
A libary that implements the boardgame labyrinth and exposes the functionality to create and interact with games
152 lines (127 loc) • 5.33 kB
text/typescript
import { Heading } from "./Heading";
import { OpenSides } from "./OpenSides";
import { TileType } from "./PathTile";
test("Streight", () => {
let openSides = new OpenSides(TileType.STREIGHT, -4);
expect(openSides.northOpen).toBe(false);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(false);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.STREIGHT, 1);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(false);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(false);
openSides = new OpenSides(TileType.STREIGHT, 2);
expect(openSides.northOpen).toBe(false);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(false);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.STREIGHT, 3);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(false);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(false);
});
test("L", () => {
let openSides = new OpenSides(TileType.L, 0);
expect(openSides.northOpen).toBe(false);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(false);
openSides = new OpenSides(TileType.L, 1);
expect(openSides.northOpen).toBe(false);
expect(openSides.eastOpen).toBe(false);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.L, 2);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(false);
expect(openSides.southOpen).toBe(false);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.L, 3);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(false);
expect(openSides.westOpen).toBe(false);
});
test("T", () => {
let openSides = new OpenSides(TileType.T, 0);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(false);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.T, 1);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(false);
openSides = new OpenSides(TileType.T, 2);
expect(openSides.northOpen).toBe(false);
expect(openSides.eastOpen).toBe(true);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(true);
openSides = new OpenSides(TileType.T, 3);
expect(openSides.northOpen).toBe(true);
expect(openSides.eastOpen).toBe(false);
expect(openSides.southOpen).toBe(true);
expect(openSides.westOpen).toBe(true);
});
test("getHeadings T", () => {
let headings = new OpenSides(TileType.T, 0).headings;
expect(headings.length).toBe(3);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.EAST);
expect(headings[2]).toBe(Heading.WEST);
headings = new OpenSides(TileType.T, 1).headings;
expect(headings.length).toBe(3);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.EAST);
expect(headings[2]).toBe(Heading.SOUTH);
headings = new OpenSides(TileType.T, 2).headings;
expect(headings.length).toBe(3);
expect(headings[0]).toBe(Heading.EAST);
expect(headings[1]).toBe(Heading.SOUTH);
expect(headings[2]).toBe(Heading.WEST);
headings = new OpenSides(TileType.T, 3).headings;
expect(headings.length).toBe(3);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.SOUTH);
expect(headings[2]).toBe(Heading.WEST);
});
test("getHeadings L", () => {
let headings = new OpenSides(TileType.L, 0).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.EAST);
expect(headings[1]).toBe(Heading.SOUTH);
headings = new OpenSides(TileType.L, 1).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.SOUTH);
expect(headings[1]).toBe(Heading.WEST);
headings = new OpenSides(TileType.L, 2).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.WEST);
headings = new OpenSides(TileType.L, 3).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.EAST);
});
test("getHeadings Streight", () => {
let headings = new OpenSides(TileType.STREIGHT, 0).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.EAST);
expect(headings[1]).toBe(Heading.WEST);
headings = new OpenSides(TileType.STREIGHT, 1).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.SOUTH);
headings = new OpenSides(TileType.STREIGHT, 2).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.EAST);
expect(headings[1]).toBe(Heading.WEST);
headings = new OpenSides(TileType.STREIGHT, 3).headings;
expect(headings.length).toBe(2);
expect(headings[0]).toBe(Heading.NORTH);
expect(headings[1]).toBe(Heading.SOUTH);
});