open OUnit2 let test_one = "1-3 a: abcde" let test_two = "2-9 c: ccccccccc" let test_three = "1-3 b: cdefg" let test_parse password lb ub char pass _ = assert_equal (Lib.parse_password password) { lower_bound = lb; upper_bound = ub; char = char; password = pass; } let assert_valid_old password bool _ = assert_equal (Lib.old_validate (Lib.parse_password password)) bool let assert_valid_new password bool _ = assert_equal (Lib.new_validate (Lib.parse_password password)) bool let () = run_test_tt_main ("day two" >::: [ "parse 01" >:: test_parse test_one 1 3 'a' "abcde"; "parse 02" >:: test_parse test_two 2 9 'c' "ccccccccc"; "parse 03" >:: test_parse test_three 1 3 'b' "cdefg"; "old validate 01" >:: assert_valid_old test_one true; "old validate 02" >:: assert_valid_old test_two true; "old validate 03" >:: assert_valid_old test_three false; "new validate 01" >:: assert_valid_new test_one true; "new validate 02" >:: assert_valid_new test_two false; "new validate 03" >:: assert_valid_new test_three false; ])