Skip to content
24 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { COLUMNS, ROWS, creature } from "./pixel-creature.ts";
5
6test("a seed always draws the same creature, symmetric and whole", () => {
7 assert.deepEqual(creature("margo"), creature("margo"));
8 for (const seed of ["margo", "ship", "a1", "reviewer", "", "zz-top"]) {
9 const { cells, colour } = creature(seed);
10 assert.equal(cells.length, ROWS);
11 assert.match(colour.fg, /^#[0-9a-f]{6}$/);
12 for (const row of cells) {
13 assert.equal(row.length, COLUMNS);
14 assert.deepEqual(row, [...row].reverse(), `${seed} is symmetric`);
15 }
16 // The spine holds it together.
17 for (let row = 1; row < ROWS - 1; row++) assert.notEqual(cells[row]![2], 0);
18 }
19});
20
21test("different seeds give different creatures", () => {
22 const drawn = new Set(["margo", "ship", "triage", "scribe", "builder", "reviewer", "nova", "pixel"].map((seed) => JSON.stringify(creature(seed))));
23 assert.ok(drawn.size >= 7);
24});