66 lines
1.5 KiB
TypeScript
66 lines
1.5 KiB
TypeScript
import { assertEquals } from "jsr:@std/assert";
|
|
import { parseMap, toMapString } from "./solve_1.ts";
|
|
import { printPrettyMapStep } from "./solve_1.ts";
|
|
import { calculateNeedsSteps } from "./solve_1.ts";
|
|
|
|
Deno.test("parseMap", () => {
|
|
const input = `..#\n#..`;
|
|
const expected = [[".", ".", "#"], ["#", ".", "."]];
|
|
assertEquals(parseMap(input), expected);
|
|
});
|
|
|
|
Deno.test("toMapString", () => {
|
|
const input = [[".", ".", "#"], ["#", ".", "."]];
|
|
const expected = `..#\n#..`;
|
|
assertEquals(toMapString(input), expected);
|
|
});
|
|
|
|
const ExampleMap = `###############
|
|
#...#...#.....#
|
|
#.#.#.#.#.###.#
|
|
#S#...#.#.#...#
|
|
#######.#.#.###
|
|
#######.#.#...#
|
|
#######.#.###.#
|
|
###..E#...#...#
|
|
###.#######.###
|
|
#...###...#...#
|
|
#.#####.#.###.#
|
|
#.#...#.#.#...#
|
|
#.#.#.#.#.#.###
|
|
#...#...#...###
|
|
###############`;
|
|
|
|
Deno.test("printPrettyMapStep", ()=>{
|
|
const map = parseMap(`...\n...\n...`);
|
|
const actual = printPrettyMapStep(map, [
|
|
[1,2,3],
|
|
[4,5,6],
|
|
[7,8,9]
|
|
]);
|
|
const expected = `123
|
|
456
|
|
789`;
|
|
assertEquals(actual, expected);
|
|
})
|
|
|
|
Deno.test("calculateNeedsSteps", () => {
|
|
const map = parseMap(ExampleMap);
|
|
const needsSteps = calculateNeedsSteps(map, [5, 7]);
|
|
const expected = `###############
|
|
#210#432#87654#
|
|
#3#9#5#1#9###3#
|
|
#4#876#0#0#012#
|
|
#######9#1#9###
|
|
#######8#2#876#
|
|
#######7#3###5#
|
|
###210#654#234#
|
|
###3#######1###
|
|
#654###456#098#
|
|
#7#####3#7###7#
|
|
#8#456#2#8#456#
|
|
#9#3#7#1#9#3###
|
|
#012#890#012###
|
|
###############`;
|
|
assertEquals(printPrettyMapStep(map, needsSteps), expected);
|
|
}) |