initial version

This commit is contained in:
Shibo Lyu 2024-04-28 13:05:28 +08:00
commit 6dfe7129c4
15 changed files with 614 additions and 0 deletions

39
tests/character.test.ts Normal file
View file

@ -0,0 +1,39 @@
import {
assertEquals,
assertThrows,
} from "https://deno.land/std@0.224.0/assert/mod.ts";
import { getCharacterWidth } from "../mod.ts";
Deno.test("getCharacterWidth ASCII", () => {
assertEquals(getCharacterWidth("a"), 1);
assertEquals(getCharacterWidth("A"), 1);
assertEquals(getCharacterWidth("1"), 1);
assertEquals(getCharacterWidth("@"), 1);
assertEquals(getCharacterWidth(" "), 1);
assertThrows(() => getCharacterWidth(""));
assertThrows(() => getCharacterWidth("ab"));
});
Deno.test("getCharacterWidth CJK", () => {
assertEquals(getCharacterWidth("你"), 2);
assertEquals(getCharacterWidth("好"), 2);
assertEquals(getCharacterWidth("吗"), 2);
assertEquals(getCharacterWidth("ガ"), 2);
assertEquals(getCharacterWidth("ギ"), 2);
assertEquals(getCharacterWidth("グ"), 2);
assertEquals(getCharacterWidth("ソ"), 2);
assertThrows(() => getCharacterWidth(""));
assertThrows(() => getCharacterWidth(""));
assertThrows(() => getCharacterWidth("你好"));
assertThrows(() => getCharacterWidth("ヨスガノ"));
});
Deno.test("getCharacterWidth previously faulty cases", () => {
assertEquals(getCharacterWidth("𤲶"), 2);
assertThrows(() => getCharacterWidth("𤲶"[0]));
});

53
tests/section.test.ts Normal file
View file

@ -0,0 +1,53 @@
import { assertEquals } from "https://deno.land/std@0.224.0/assert/mod.ts";
import { createSection } from "../logic/section.ts";
Deno.test("createSection", () => {
const section = createSection(
{ sx: 0, sy: 0 },
{
xSections: 2,
ySections: 2,
sectionWidth: 3,
sectionHeight: 3,
defaultCh: " ",
defaultColor: "F",
defaultBgColor: "0",
defaultWidth: 1,
}
);
assertEquals(section.offsetX, 0);
assertEquals(section.offsetY, 0);
assertEquals(section.ch.length, 3);
for (const row of section.ch) {
assertEquals(row.length, 3);
for (const ch of row) {
assertEquals(ch, " ");
}
}
assertEquals(section.color.length, 3);
for (const row of section.color) {
assertEquals(row.length, 3);
for (const color of row) {
assertEquals(color, "F");
}
}
assertEquals(section.bgColor.length, 3);
for (const row of section.bgColor) {
assertEquals(row.length, 3);
for (const bgColor of row) {
assertEquals(bgColor, "0");
}
}
assertEquals(section.width.length, 3);
for (const row of section.width) {
assertEquals(row.length, 3);
for (const width of row) {
assertEquals(width, 1);
}
}
});