(** Test demonstrating the unified Jmap API *) let test_module_aliases () = (* Using the clean, ergonomic unified Jmap module *) let id1 = Jmap.Id.of_string "test123" in let id2 = Jmap.Id.of_string "test456" in assert (Jmap.Id.to_string id1 = "test123"); assert (Jmap.Id.to_string id2 = "test456"); (* Test capability creation *) let caps = [Jmap.Capability.core; Jmap.Capability.mail] in assert (List.length caps = 2); (* Test primitives *) let limit = Jmap.Primitives.UnsignedInt.of_int 10 in assert (Jmap.Primitives.UnsignedInt.to_int limit = 10); (* Test comparator *) let sort = Jmap.Comparator.v ~property:"receivedAt" ~is_ascending:false () in assert (Jmap.Comparator.property sort = "receivedAt"); assert (not (Jmap.Comparator.is_ascending sort)); print_endline "āœ“ Unified Jmap module API works correctly"; print_endline " - Short aliases: Jmap.Id, Jmap.Capability, etc."; print_endline " - Mail modules: Jmap.Email, Jmap.Mailbox, etc."; print_endline " - Client API: Jmap.Client" let test_mail_module_aliases () = (* The unified module provides direct access to mail modules *) let account_id = Jmap.Id.of_string "test-account" in let limit = Jmap.Primitives.UnsignedInt.of_int 10 in let query_req = Jmap.Email.Query.request_v ~account_id ~limit ~calculate_total:true () in (* Verify it works *) let _json = Jmap.Email.Query.request_to_json query_req in print_endline "āœ“ Unified mail module aliases work"; print_endline " - Jmap.Email, Jmap.Mailbox, Jmap.Thread"; print_endline " - Clean and ergonomic" let test_submodule_aliases () = (* You can also use the submodules directly for specialized use *) let id1 = Jmap_core.Id.of_string "test123" in let id2 = Jmap_mail.Email.Query.request_v ~account_id:id1 ~limit:(Jmap_core.Primitives.UnsignedInt.of_int 5) () in let _json = Jmap_mail.Email.Query.request_to_json id2 in print_endline "āœ“ Submodule access works"; print_endline " - Jmap_core.Id, Jmap_mail.Email"; print_endline " - For specialized use cases" let () = print_endline "=== Testing Unified Jmap API ===\n"; test_module_aliases (); print_endline ""; test_mail_module_aliases (); print_endline ""; test_submodule_aliases (); print_endline "\nāœ“ All tests passed!"