mirror of
https://github.com/TextPlace/CoreTextPlace.git
synced 2025-05-01 05:01:11 +00:00
82 lines
2.6 KiB
TypeScript
82 lines
2.6 KiB
TypeScript
import {
|
|
assert,
|
|
assertEquals,
|
|
} from "https://deno.land/std@0.224.0/assert/mod.ts";
|
|
|
|
import { createBoard, renderFullBoard } from "../logic/board.ts";
|
|
import type { BoardData } from "../types/board.ts";
|
|
import { checkFullBoard } from "./checkFullBoard.ts";
|
|
import { locateSection } from "../logic/board.ts";
|
|
import { applyChangeOnBoard } from "../logic/board.ts";
|
|
|
|
Deno.test("board", async (t) => {
|
|
let board: BoardData | undefined;
|
|
|
|
await t.step("createBoard", () => {
|
|
board = createBoard({
|
|
xSections: 2,
|
|
ySections: 2,
|
|
sectionWidth: 4,
|
|
sectionHeight: 3,
|
|
defaultCh: " ",
|
|
defaultColor: "F",
|
|
defaultBgColor: "0",
|
|
defaultWidth: 1,
|
|
});
|
|
|
|
assertEquals(board.sections.length, 2);
|
|
assertEquals(board.sections[0].length, 2);
|
|
assertEquals(board.sections[0][0].offsetX, 0);
|
|
assertEquals(board.sections[0][0].offsetY, 0);
|
|
assertEquals(board.sections[0][1].offsetX, 4);
|
|
assertEquals(board.sections[0][1].offsetY, 0);
|
|
assertEquals(board.sections[1].length, 2);
|
|
assertEquals(board.sections[1][0].offsetX, 0);
|
|
assertEquals(board.sections[1][0].offsetY, 3);
|
|
assertEquals(board.sections[1][1].offsetX, 4);
|
|
assertEquals(board.sections[1][1].offsetY, 3);
|
|
});
|
|
|
|
await t.step("locateSection", () => {
|
|
assert(board);
|
|
|
|
const { sx, sy } = locateSection({ x: 0, y: 0 }, board.config);
|
|
assertEquals(sx, 0);
|
|
assertEquals(sy, 0);
|
|
|
|
const { sx: sx2, sy: sy2 } = locateSection({ x: 4, y: 0 }, board.config);
|
|
assertEquals(sx2, 1);
|
|
assertEquals(sy2, 0);
|
|
});
|
|
|
|
await t.step("applyChangeOnBoard", () => {
|
|
assert(board);
|
|
|
|
applyChangeOnBoard({ x: 0, y: 0, ch: "A" }, board);
|
|
applyChangeOnBoard({ x: 4, y: 0, ch: "B" }, board);
|
|
applyChangeOnBoard({ x: 0, y: 3, ch: "C" }, board);
|
|
applyChangeOnBoard({ x: 4, y: 3, ch: "D" }, board);
|
|
|
|
assertEquals(board.sections[0][0].ch[0][0], "A");
|
|
assertEquals(board.sections[0][1].ch[0][0], "B");
|
|
assertEquals(board.sections[1][0].ch[0][0], "C");
|
|
assertEquals(board.sections[1][1].ch[0][0], "D");
|
|
|
|
applyChangeOnBoard({ x: 0, y: 1, ch: "你" }, board);
|
|
applyChangeOnBoard({ x: 4, y: 2, ch: "好" }, board);
|
|
applyChangeOnBoard({ x: 0, y: 4, ch: "嗎" }, board);
|
|
applyChangeOnBoard({ x: 4, y: 4, ch: "嘛" }, board);
|
|
|
|
assertEquals(board.sections[0][0].ch[1][0], "你");
|
|
assertEquals(board.sections[0][1].ch[2][0], "好");
|
|
assertEquals(board.sections[1][0].ch[1][0], "嗎");
|
|
assertEquals(board.sections[1][1].ch[2][0], "嘛");
|
|
});
|
|
|
|
await t.step("renderFullBoard", () => {
|
|
assert(board);
|
|
|
|
const rendered = renderFullBoard(board);
|
|
checkFullBoard(rendered);
|
|
});
|
|
});
|