Advent-of-Code-2025/day_3/test/day_3_test.gleam
2025-12-03 15:05:22 +01:00

87 lines
2.3 KiB
Gleam

import day_3.{Bank, Digit}
import gleam/list
import gleeunit
pub fn main() -> Nil {
gleeunit.main()
}
pub fn file_parse_test() {
assert day_3.file_to_banks("test/calibration.txt")
== [
day_3.Bank(
[9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1]
|> list.map(day_3.Digit),
),
day_3.Bank(
[8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9]
|> list.map(day_3.Digit),
),
day_3.Bank(
[2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8]
|> list.map(day_3.Digit),
),
day_3.Bank(
[8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1]
|> list.map(day_3.Digit),
),
]
}
pub fn split_single_element_bank_test() {
assert day_3.split_bank_at_max(Bank([Digit(1)]))
== #(Bank([Digit(1)]), Bank([]))
}
pub fn split_at_first_digit_test() {
assert day_3.split_bank_at_max(Bank([Digit(3), Digit(2), Digit(1)]))
== #(Bank([Digit(3)]), Bank([Digit(2), Digit(1)]))
}
// The degenerate case
pub fn extract_max_from_accending_test() {
assert day_3.split_bank_at_max(Bank([Digit(1), Digit(2), Digit(3)]))
== #(Bank([Digit(1), Digit(2)]), Bank([Digit(3)]))
}
pub fn complex_degnerate_test() {
assert day_3.split_bank_at_max(day_3.int_list_to_bank([1, 2, 1, 3]))
== #(day_3.int_list_to_bank([1, 2]), day_3.int_list_to_bank([1, 3]))
}
pub fn bank_to_split_line_4_test() {
assert day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1])
|> day_3.split_bank_at_max
== #(
day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9]),
day_3.int_list_to_bank([1, 1, 1, 1, 2, 1, 1, 1]),
)
}
pub fn bank_to_max_line_1_test() {
assert day_3.int_list_to_bank([9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1])
|> day_3.get_max_from_bank
== 98
}
pub fn bank_to_max_line_2_test() {
assert day_3.int_list_to_bank([8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9])
|> day_3.get_max_from_bank
== 89
}
pub fn bank_to_max_line_3_test() {
assert day_3.int_list_to_bank([2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8])
|> day_3.get_max_from_bank
== 78
}
pub fn bank_to_max_line_4_test() {
assert day_3.int_list_to_bank([8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1])
|> day_3.get_max_from_bank
== 92
}
pub fn calibrate_test() {
assert day_3.file_to_max_joltage("test/calibration.txt") == 357
}