import { test, expect, describe } from "vitest";

import { expectSolution } from "../01/main.js";
import part1, { sample, puzzleInput, isLessThan } from "./part1.js";
import part2 from "./part2.js";

describe("part 1", () => {
  test("readInput", () => {
    expect(sample[0][0]).toEqual([1, 1, 3, 1, 1]);
  });
  test("lessThan", () => {
    expect(isLessThan(1, 2)).toBe(-1);
    expect(isLessThan(2, 1)).toBe(1);
    expect(isLessThan(2, 2)).toBe(0);
    expect(isLessThan(2, [1])).toBe(1);
    expect(isLessThan([1], [2])).toBe(-1);
  });
  test("sample", () => {
    expect(part1(sample)).toEqual(13);
  });
  test("solution", () => {
    const r = part1(puzzleInput);
    expect(r).toBeGreaterThan(435);
    expect(r).toBeLessThan(10980);
    expectSolution(r).toEqual(5806);
  });
});

describe("part 2", () => {
  test("sample", () => {
    expect(part2(sample)).toEqual(140);
  });
  test("solution", () => {
    expectSolution(part2(puzzleInput)).toEqual(23600);
  });
});