My agentic slop goes here. Not intended for anyone else!
1(** Test demonstrating the unified Jmap API *)
2
3let test_module_aliases () =
4 (* Using the clean, ergonomic unified Jmap module *)
5 let id1 = Jmap.Id.of_string "test123" in
6 let id2 = Jmap.Id.of_string "test456" in
7
8 assert (Jmap.Id.to_string id1 = "test123");
9 assert (Jmap.Id.to_string id2 = "test456");
10
11 (* Test capability creation *)
12 let caps = [Jmap.Capability.core; Jmap.Capability.mail] in
13 assert (List.length caps = 2);
14
15 (* Test primitives *)
16 let limit = Jmap.Primitives.UnsignedInt.of_int 10 in
17 assert (Jmap.Primitives.UnsignedInt.to_int limit = 10);
18
19 (* Test comparator *)
20 let sort = Jmap.Comparator.v ~property:"receivedAt" ~is_ascending:false () in
21 assert (Jmap.Comparator.property sort = "receivedAt");
22 assert (not (Jmap.Comparator.is_ascending sort));
23
24 print_endline "✓ Unified Jmap module API works correctly";
25 print_endline " - Short aliases: Jmap.Id, Jmap.Capability, etc.";
26 print_endline " - Mail modules: Jmap.Email, Jmap.Mailbox, etc.";
27 print_endline " - Client API: Jmap.Client"
28
29let test_mail_module_aliases () =
30 (* The unified module provides direct access to mail modules *)
31 let account_id = Jmap.Id.of_string "test-account" in
32 let limit = Jmap.Primitives.UnsignedInt.of_int 10 in
33
34 let query_req = Jmap.Email.Query.request_v
35 ~account_id
36 ~limit
37 ~calculate_total:true
38 ()
39 in
40
41 (* Verify it works *)
42 let _json = Jmap.Email.Query.request_to_json query_req in
43
44 print_endline "✓ Unified mail module aliases work";
45 print_endline " - Jmap.Email, Jmap.Mailbox, Jmap.Thread";
46 print_endline " - Clean and ergonomic"
47
48let test_submodule_aliases () =
49 (* You can also use the submodules directly for specialized use *)
50 let id1 = Jmap_core.Id.of_string "test123" in
51 let id2 = Jmap_mail.Email.Query.request_v
52 ~account_id:id1
53 ~limit:(Jmap_core.Primitives.UnsignedInt.of_int 5)
54 ()
55 in
56 let _json = Jmap_mail.Email.Query.request_to_json id2 in
57
58 print_endline "✓ Submodule access works";
59 print_endline " - Jmap_core.Id, Jmap_mail.Email";
60 print_endline " - For specialized use cases"
61
62let () =
63 print_endline "=== Testing Unified Jmap API ===\n";
64 test_module_aliases ();
65 print_endline "";
66 test_mail_module_aliases ();
67 print_endline "";
68 test_submodule_aliases ();
69 print_endline "\n✓ All tests passed!"