summaryrefslogtreecommitdiff
path: root/2024/OCaml/test/day_03_part_01.ml
blob: 0db039ab61e6c8f8baef45af51ec286bb7cc8ddd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
open OUnit2
open AoC_2024.Day_03.Part_01

let example_input =
  "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"

let test_find_mul _ =
  assert_equal
    [ "mul(2,4)"; "mul(5,5)"; "mul(11,8)"; "mul(8,5)" ]
    (let result = find_mul example_input in
     List.map (fun x -> Re2.Match.get_exn x ~sub:(`Index 0)) result)

let test_extract_pairs _ =
  assert_equal
    [ (2, 4); (5, 5); (11, 8); (8, 5) ]
    (let matches = find_mul example_input in
     extract_pairs matches)

let test_solve _ = assert_equal ~printer:string_of_int 161 (solve example_input)

let tests =
  "test suite for day 3 part 1"
  >::: [
         "muls extracted from example correctly" >:: test_find_mul;
         "pairs extracted from matches" >:: test_extract_pairs;
         "example correctly solved" >:: test_solve;
       ]

let _ = run_test_tt_main tests