module C = Colitur_kernel.Colour module S = Colitur_kernel.Subject let test_colour_strings () = Alcotest.(check string) "violet" "violet" (C.to_string C.Violet); Alcotest.(check bool) "of_string rose" true (C.of_string "rose" = Some C.Rose); Alcotest.(check bool) "of_string junk" true (C.of_string "puce" = None); Alcotest.(check int) "all has six" 6 (List.length C.all) let test_subject_strings () = Alcotest.(check string) "bvm" "bvm" (S.to_string S.Bvm); Alcotest.(check bool) "of_string lord" true (S.of_string "lord" = Some S.Lord); Alcotest.(check int) "all has four" 4 (List.length S.all) (* Every constructor round-trips through both string and sexp. *) let test_roundtrips () = List.iter (fun c -> Alcotest.(check bool) "colour string roundtrip" true (C.of_string (C.to_string c) = Some c); Alcotest.(check bool) "colour sexp roundtrip" true (C.t_of_sexp (C.sexp_of_t c) = c)) C.all; List.iter (fun s -> Alcotest.(check bool) "subject string roundtrip" true (S.of_string (S.to_string s) = Some s); Alcotest.(check bool) "subject sexp roundtrip" true (S.t_of_sexp (S.sexp_of_t s) = s)) S.all let suite = ( "Colour/Subject", [ Alcotest.test_case "colour strings" `Quick test_colour_strings; Alcotest.test_case "subject strings" `Quick test_subject_strings; Alcotest.test_case "roundtrips" `Quick test_roundtrips ] )