92 lines
2.7 KiB
TypeScript
92 lines
2.7 KiB
TypeScript
import { describe, it, expect } from "bun:test";
|
|
import { getValue, ServerGame, serverToClientGame } from "./game";
|
|
|
|
describe("Game", () => {
|
|
it("should get value", () => {
|
|
const mines = [
|
|
[false, false, true, true, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, true, true],
|
|
[false, false, false, false, false],
|
|
];
|
|
expect(getValue(mines, 0, 0)).toEqual(1);
|
|
expect(getValue(mines, 0, 1)).toEqual(3);
|
|
expect(getValue(mines, 3, 0)).toEqual(0);
|
|
expect(getValue(mines, 1, 3)).toEqual(8);
|
|
});
|
|
|
|
it("should convert server to client game", () => {
|
|
const serverGame: ServerGame = {
|
|
theme: "default",
|
|
mines: [
|
|
[false, false, true, true, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, true, true],
|
|
[false, false, false, false, false],
|
|
],
|
|
minesCount: 4,
|
|
isRevealed: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[false, false, false, false, false],
|
|
],
|
|
isFlagged: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[true, false, false, false, false],
|
|
],
|
|
started: 1679599200000,
|
|
finished: 0,
|
|
lastClick: [0, 0] satisfies [number, number],
|
|
uuid: "C270D7CD-AF97-42CE-A6C9-CB765102CA17",
|
|
width: 5,
|
|
height: 4,
|
|
user: "TestUser",
|
|
stage: 1,
|
|
isQuestionMark: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[false, false, false, false, false],
|
|
],
|
|
};
|
|
expect(serverToClientGame(serverGame)).toEqual({
|
|
theme: "default",
|
|
minesCount: 4,
|
|
isRevealed: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[false, false, false, false, false],
|
|
],
|
|
isFlagged: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[true, false, false, false, false],
|
|
],
|
|
values: [
|
|
[-1, -1, 2, -1, 2],
|
|
[0, -1, 4, -1, 4],
|
|
[-1, -1, 2, -1, 2],
|
|
[-1, -1, -1, -1, -1],
|
|
],
|
|
lastClick: [0, 0],
|
|
started: 1679599200000,
|
|
uuid: "C270D7CD-AF97-42CE-A6C9-CB765102CA17",
|
|
width: 5,
|
|
height: 4,
|
|
user: "TestUser",
|
|
stage: 1,
|
|
isQuestionMark: [
|
|
[false, false, true, false, true],
|
|
[true, false, true, false, true],
|
|
[false, false, true, false, true],
|
|
[false, false, false, false, false],
|
|
],
|
|
});
|
|
});
|
|
});
|