45 lines
1.0 KiB
JavaScript
45 lines
1.0 KiB
JavaScript
import { test, expect, describe } from "vitest";
|
|
import Victor from "@a-robu/victor";
|
|
|
|
const V = (...args) => new Victor(...args);
|
|
|
|
import { expectSolution } from "../01/main.js";
|
|
import part1, { moveOnce, sample, puzzleInput } from "./part1.js";
|
|
import part2, { bigSample } from "./part2.js";
|
|
|
|
describe("part 1", () => {
|
|
test("moveOnce", () => {
|
|
let head = V(1, 0);
|
|
let tail = V(0, 0);
|
|
moveOnce(head, tail)(V(1, 0));
|
|
|
|
expect(tail).toMatchObject({ x: 1, y: 0 });
|
|
|
|
moveOnce(head, tail)(V(0, 1));
|
|
|
|
expect(tail).toMatchObject({ x: 1, y: 0 });
|
|
|
|
moveOnce(head, tail)(V(0, 1));
|
|
|
|
expect(tail).toMatchObject({ x: 2, y: 1 });
|
|
});
|
|
|
|
test("sample", () => {
|
|
expect(part1(sample)).toEqual(13);
|
|
});
|
|
test("solution", () => {
|
|
expectSolution(part1(puzzleInput)).toEqual(6030);
|
|
});
|
|
});
|
|
|
|
describe("part 2", () => {
|
|
test("sample", () => {
|
|
expect(part2(sample)).toEqual(1);
|
|
expect(part2(bigSample)).toEqual(36);
|
|
});
|
|
|
|
test("solution", () => {
|
|
expectSolution(part2(puzzleInput)).toEqual(2545);
|
|
});
|
|
});
|