1import { assertEquals, assertExists, assertNotEquals } from "@std/assert";23import {4 getPuzzleByDateIndex,5 listAvailablePuzzleDates,6} from "@/lib/shikaku/catalog.ts";78Deno.test("getPuzzleByDateIndex returns a deterministic generated puzzle for a valid date and streak index", () => {9 const puzzle = getPuzzleByDateIndex("2026-04-16", 0);1011 assertExists(puzzle);12 assertEquals(puzzle.id, "daily-2026-04-16-0");13 assertEquals(puzzle.width, 8);14 assertEquals(puzzle.height, 8);15 assertEquals(puzzle.seed, "2026-04-16:0");16 assertEquals(puzzle.streakIndex, 0);17});1819Deno.test("getPuzzleByDateIndex changes the puzzle when the streak index changes", () => {20 const first = getPuzzleByDateIndex("2026-04-16", 0);21 const second = getPuzzleByDateIndex("2026-04-16", 1);2223 assertExists(first);24 assertExists(second);25 assertNotEquals(first.seed, second.seed);26 assertNotEquals(first.id, second.id);27});2829Deno.test("getPuzzleByDateIndex rejects invalid date slugs or negative indexes", () => {30 assertEquals(getPuzzleByDateIndex("not-a-date", 0), null);31 assertEquals(getPuzzleByDateIndex("2026-04-16", -1), null);32});3334Deno.test("listAvailablePuzzleDates returns the streak start date through a provided day", () => {35 assertEquals(listAvailablePuzzleDates("2026-04-18"), [36 "2026-04-16",37 "2026-04-17",38 "2026-04-18",39 ]);40});