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

import { expectSolution } from "../01/main.js";
import {
  parseInput,
  sampleInput,
  puzzleInput,
  mapScores,
  solutionPart1,
} from "./part1.js";
import { solutionPart2 } from "./part2.js";

describe("part 1", () => {
  test("input parsing", () => {
    expect(parseInput(sampleInput)).toEqual([
      ["A", "Y"],
      ["B", "X"],
      ["C", "Z"],
    ]);
  });

  test("mapScore", () => {
    expect(mapScores(["A", "B"])).toEqual([6, 2]);
    expect(mapScores(["B", "A"])).toEqual([0, 1]);
    expect(mapScores(["C", "C"])).toEqual([3, 3]);
  });

  test("part 1, sample", () => {
    expect(solutionPart1(sampleInput)).toEqual(15);
  });

  test("solution", () => {
    expectSolution(solutionPart1(puzzleInput)).toEqual(12458);
  });
});

describe("part 2", () => {
  test("part 2", () => {
    expectSolution(solutionPart2(puzzleInput)).toEqual(12683);
  });
});