summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/dune2
-rw-r--r--test/test_date.ml19
2 files changed, 19 insertions, 2 deletions
diff --git a/test/dune b/test/dune
index 8ee8b87..3d8fa59 100644
--- a/test/dune
+++ b/test/dune
@@ -1,6 +1,6 @@
(test
(name test_colitur)
- (libraries colitur_kernel alcotest qcheck qcheck-alcotest))
+ (libraries colitur_kernel alcotest qcheck qcheck-alcotest sexplib))
(cram
(deps %{bin:colitur}))
diff --git a/test/test_date.ml b/test/test_date.ml
index 2458659..e3c2dfb 100644
--- a/test/test_date.ml
+++ b/test/test_date.ml
@@ -52,11 +52,28 @@ let prop_weekday_cycle =
QCheck.Test.make ~name:"weekday(add_days d 7) = weekday d" arb_date
(fun d -> D.weekday (D.add_days d 7) = D.weekday d)
+let test_iso8601 () =
+ Alcotest.(check string) "to_iso8601" "2026-04-05" (D.to_iso8601 (mk 2026 4 5));
+ (match D.of_iso8601 "2026-04-05" with
+ | Ok d -> Alcotest.(check int) "of_iso8601 roundtrip" 0 (D.compare d (mk 2026 4 5))
+ | Error e -> Alcotest.failf "of_iso8601: %s" e);
+ Alcotest.(check bool) "reject garbage" true (Result.is_error (D.of_iso8601 "nope"));
+ Alcotest.(check bool) "reject 2026-02-30" true (Result.is_error (D.of_iso8601 "2026-02-30"))
+
+let test_date_sexp () =
+ let d = mk 2026 4 5 in
+ Alcotest.(check string) "sexp_of_t" "2026-04-05" (Sexplib.Sexp.to_string (D.sexp_of_t d));
+ Alcotest.(check int) "t_of_sexp roundtrip" 0
+ (D.compare (D.t_of_sexp (D.sexp_of_t d)) d);
+ Alcotest.(check string) "weekday_to_string" "sunday" (D.weekday_to_string (D.weekday d))
+
let suite =
( "Date",
[ Alcotest.test_case "weekday" `Quick test_weekday;
Alcotest.test_case "roundtrip" `Quick test_roundtrip;
Alcotest.test_case "add_days boundaries" `Quick test_add_days;
- Alcotest.test_case "make rejects invalid" `Quick test_make_reject ]
+ Alcotest.test_case "make rejects invalid" `Quick test_make_reject;
+ Alcotest.test_case "iso8601" `Quick test_iso8601;
+ Alcotest.test_case "sexp" `Quick test_date_sexp ]
@ List.map QCheck_alcotest.to_alcotest
[ prop_roundtrip; prop_add_inverse; prop_weekday_cycle ] )