From 987fc30dd71883d0bcb068bbfa00c9235f3e36cb Mon Sep 17 00:00:00 2001 From: "Ruidy (aider)" Date: Mon, 2 Dec 2024 07:33:40 +0100 Subject: [PATCH] test: Add comprehensive test suite for Day 2 solution --- .../solutions/day02/day2_test.exs | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 test/advent_code2024/solutions/day02/day2_test.exs diff --git a/test/advent_code2024/solutions/day02/day2_test.exs b/test/advent_code2024/solutions/day02/day2_test.exs new file mode 100644 index 0000000..174f70a --- /dev/null +++ b/test/advent_code2024/solutions/day02/day2_test.exs @@ -0,0 +1,57 @@ +defmodule AdventCode2024.Solutions.Day2Test do + use ExUnit.Case + alias AdventCode2024.Solutions.Day2 + + describe "solve/1" do + test "correctly identifies safe reports from example data" do + input = """ + 7 6 4 2 1 + 1 2 7 8 9 + 9 7 6 2 1 + 1 3 2 4 5 + 8 6 4 4 1 + 1 3 6 7 9 + """ + + assert Day2.solve(input) == {:ok, 2} + end + + test "identifies a single safe decreasing report" do + input = "7 6 4 2 1\n" + assert Day2.solve(input) == {:ok, 1} + end + + test "identifies a single safe increasing report" do + input = "1 3 6 7 9\n" + assert Day2.solve(input) == {:ok, 1} + end + + test "identifies an unsafe report with too large increase" do + input = "1 2 7 8 9\n" + assert Day2.solve(input) == {:ok, 0} + end + + test "identifies an unsafe report with too large decrease" do + input = "9 7 6 2 1\n" + assert Day2.solve(input) == {:ok, 0} + end + + test "identifies an unsafe report with direction change" do + input = "1 3 2 4 5\n" + assert Day2.solve(input) == {:ok, 0} + end + + test "identifies an unsafe report with no change between numbers" do + input = "8 6 4 4 1\n" + assert Day2.solve(input) == {:ok, 0} + end + + test "handles empty input" do + assert Day2.solve("") == {:error, :no_valid_reports} + end + + test "handles invalid input format" do + assert Day2.solve("not numbers") == {:error, :invalid_format} + end + end +end