import tap from "tap";
import fs from "fs-extra";

import * as part1 from "./part1.mjs";
import * as part2 from "./part2.mjs";

const processFile = async (f) =>
    fs
        .readFile(f, "utf8")
        .then((x) => x.split("\n"))
        .then((lines) => lines.map((l) => l.split(" ")))
        .then((lines) => lines.filter( ([action]) => action ).map((l) => [l[0], parseInt(l[1])]));

const sample = processFile("sample");
const input = processFile("input");

tap.test("part1", async (t) => {
    t.equal(part1.solution(await sample), 150);
    t.equal(part1.solution(await input), 2091984);
});

tap.test("part2", async (t) => {
    t.equal(part2.solution(await sample), 900);
    t.equal(part2.solution(await input), 2086261056);
});