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), ] } pub fn calibrate_test() { assert day_2.file_to_sum_of_bad_ids("test/calibration.txt") == 1_227_775_554 } 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 }