Advent-of-Code-2025/day_2/test/day_2_test.gleam

153 lines
3.3 KiB
Gleam
Raw Normal View History

2025-12-02 15:37:19 +01:00
import day_2
import gleeunit
pub fn main() -> Nil {
gleeunit.main()
}
pub fn trivial_digits_test() {
assert day_2.int_to_half_length_pair(1) == Ok(#([], [1]))
}
pub fn two_digit_number_test() {
assert day_2.int_to_half_length_pair(12) == Ok(#([1], [2]))
}
pub fn ten_digit_number_test() {
assert day_2.int_to_half_length_pair(1_234_567_890)
== Ok(#([1, 2, 3, 4, 5], [6, 7, 8, 9, 0]))
}
pub fn eleven_digit_number_test() {
assert day_2.int_to_half_length_pair(12_345_678_901)
== Ok(#([1, 2, 3, 4, 5], [6, 7, 8, 9, 0, 1]))
}
pub fn bad_number_test() {
assert day_2.int_is_doubled_string(123_123) == Ok(True)
}
pub fn good_number_test() {
assert day_2.int_is_doubled_string(123_456) == Ok(False)
}
pub fn list_of_ranges_test() {
assert day_2.ranges_to_list_of_ids([#(10, 20), #(30, 40)])
== [
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
]
}
pub fn ranges_with_bad_ids_test() {
assert day_2.ranges_to_bad_ids([
#(11, 22),
#(95, 115),
#(998, 1012),
#(1_188_511_880, 1_188_511_890),
#(222_220, 222_224),
#(1_698_522, 1_698_528),
#(446_443, 446_449),
#(38_593_856, 38_593_862),
])
== [11, 22, 99, 1010, 1_188_511_885, 222_222, 446_446, 38_593_859]
}
pub fn sum_of_bad_ids_test() {
assert day_2.sum_of_bad_ids([
#(11, 22),
#(95, 115),
#(998, 1012),
#(1_188_511_880, 1_188_511_890),
#(222_220, 222_224),
#(1_698_522, 1_698_528),
#(446_443, 446_449),
#(38_593_856, 38_593_862),
])
== 1_227_775_554
}
pub fn range_parse_test() {
assert day_2.range_string_to_int_pair("111-333") == #(111, 333)
}
pub fn ranges_parse_test() {
let ranges =
"11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124"
assert day_2.list_of_ranges_to_int_pairs(ranges)
== [
#(11, 22),
#(95, 115),
#(998, 1012),
#(1_188_511_880, 1_188_511_890),
#(222_220, 222_224),
#(1_698_522, 1_698_528),
#(446_443, 446_449),
#(38_593_856, 38_593_862),
#(565_653, 565_659),
#(824_824_821, 824_824_827),
#(2_121_212_118, 2_121_212_124),
]
}
2025-12-02 18:28:42 +01:00
pub fn calibrate_test() {
2025-12-02 15:37:19 +01:00
assert day_2.file_to_sum_of_bad_ids("test/calibration.txt") == 1_227_775_554
}
2025-12-02 18:28:42 +01:00
pub fn int_to_substrings_test() {
assert day_2.digits_to_substrings([1, 2, 3, 4]) == [[1], [1, 2], [1, 2, 3]]
}
pub fn can_repeat_into_test() {
assert day_2.can_repeat_into([1, 2], [1, 2, 3, 4])
}
pub fn cannot_repeat_into_test() {
assert !{ day_2.can_repeat_into([1, 2], [1, 2, 3]) }
}
pub fn repeats_into_test() {
assert day_2.repeats_into([1, 2], [1, 2, 1, 2])
}
pub fn doesnot_repeat_into_test() {
assert !day_2.repeats_into([1, 2], [1, 2, 3])
}
pub fn has_doubled_string_test() {
assert day_2.has_repeated_string(1212)
}
pub fn has_trippled_string_test() {
assert day_2.has_repeated_string(121_212)
}
pub fn no_repeated_strings_test() {
assert !day_2.has_repeated_string(123)
}
pub fn calibrate_part2_test() {
assert day_2.file_to_sum_of_bad_ids_part2("test/calibration.txt")
== 4_174_379_265
}