forked from
anil.recoil.org/ocaml-requests
A batteries included HTTP/1.1 client in OCaml
1(*---------------------------------------------------------------------------
2 Copyright (c) 2025 Anil Madhavapeddy <anil@recoil.org>. All rights reserved.
3 SPDX-License-Identifier: ISC
4 ---------------------------------------------------------------------------*)
5
6(** Tests for Expect_continue module *)
7
8module Expect_continue = Requests.Expect_continue
9
10(** {1 Default Configuration Tests} *)
11
12let test_default_threshold () =
13 let t = Expect_continue.default in
14 Alcotest.(check int64)
15 "default threshold is 1MB" 1_048_576L
16 (Expect_continue.threshold t)
17
18let test_default_enabled () =
19 let t = Expect_continue.default in
20 Alcotest.(check bool) "default is enabled" true (Expect_continue.enabled t)
21
22let test_default_timeout () =
23 let t = Expect_continue.default in
24 Alcotest.(check (float 0.01))
25 "default timeout" 1.0
26 (Expect_continue.timeout t)
27
28(** {1 Disabled Configuration Tests} *)
29
30let test_disabled_not_enabled () =
31 let t = Expect_continue.disabled in
32 Alcotest.(check bool)
33 "disabled is not enabled" false
34 (Expect_continue.enabled t)
35
36(** {1 of_config Tests} *)
37
38let test_of_config_disabled () =
39 let t = Expect_continue.of_config `Disabled in
40 Alcotest.(check bool) "Disabled config" false (Expect_continue.enabled t)
41
42let test_of_config_always () =
43 let t = Expect_continue.of_config `Always in
44 Alcotest.(check bool) "Always enabled" true (Expect_continue.enabled t);
45 Alcotest.(check int64)
46 "Always threshold is 0" 0L
47 (Expect_continue.threshold t)
48
49let test_of_config_threshold () =
50 let t = Expect_continue.of_config (`Threshold 5000L) in
51 Alcotest.(check bool) "Threshold enabled" true (Expect_continue.enabled t);
52 Alcotest.(check int64) "Threshold value" 5000L (Expect_continue.threshold t)
53
54let test_of_config_custom_timeout () =
55 let t = Expect_continue.of_config ~timeout:2.5 (`Threshold 1000L) in
56 Alcotest.(check (float 0.01)) "custom timeout" 2.5 (Expect_continue.timeout t)
57
58(** {1 should_use Tests} *)
59
60let test_should_use_above_threshold () =
61 let t = Expect_continue.of_config (`Threshold 1000L) in
62 Alcotest.(check bool)
63 "body above threshold" true
64 (Expect_continue.should_use t 2000L)
65
66let test_should_use_at_threshold () =
67 let t = Expect_continue.of_config (`Threshold 1000L) in
68 Alcotest.(check bool)
69 "body at threshold" true
70 (Expect_continue.should_use t 1000L)
71
72let test_should_use_below_threshold () =
73 let t = Expect_continue.of_config (`Threshold 1000L) in
74 Alcotest.(check bool)
75 "body below threshold" false
76 (Expect_continue.should_use t 999L)
77
78let test_should_use_disabled () =
79 let t = Expect_continue.disabled in
80 Alcotest.(check bool)
81 "disabled always false" false
82 (Expect_continue.should_use t 999_999_999L)
83
84let test_should_use_always () =
85 let t = Expect_continue.of_config `Always in
86 Alcotest.(check bool)
87 "always with any body" true
88 (Expect_continue.should_use t 1L)
89
90let test_should_use_always_zero () =
91 let t = Expect_continue.of_config `Always in
92 Alcotest.(check bool)
93 "always with zero body" true
94 (Expect_continue.should_use t 0L)
95
96(** {1 default_threshold Tests} *)
97
98let test_default_threshold_value () =
99 Alcotest.(check int64)
100 "default_threshold is 1MB" 1_048_576L Expect_continue.default_threshold
101
102(** {1 make Tests} *)
103
104let test_make_defaults () =
105 let t = Expect_continue.v () in
106 Alcotest.(check bool) "make defaults enabled" true (Expect_continue.enabled t);
107 Alcotest.(check int64)
108 "make defaults threshold" 1_048_576L
109 (Expect_continue.threshold t)
110
111let test_make_custom () =
112 let t = Expect_continue.v ~enabled:false ~threshold:500L ~timeout:3.0 () in
113 Alcotest.(check bool) "custom not enabled" false (Expect_continue.enabled t);
114 Alcotest.(check int64) "custom threshold" 500L (Expect_continue.threshold t);
115 Alcotest.(check (float 0.01)) "custom timeout" 3.0 (Expect_continue.timeout t)
116
117(** {1 to_string Tests} *)
118
119let test_to_string () =
120 let t = Expect_continue.default in
121 let s = Expect_continue.to_string t in
122 Alcotest.(check bool) "to_string non-empty" true (String.length s > 0)
123
124(** {1 Test Suite} *)
125
126let suite =
127 ( "expect_continue",
128 [
129 Alcotest.test_case "threshold is 1MB" `Quick test_default_threshold;
130 Alcotest.test_case "enabled" `Quick test_default_enabled;
131 Alcotest.test_case "timeout" `Quick test_default_timeout;
132 Alcotest.test_case "not enabled" `Quick test_disabled_not_enabled;
133 Alcotest.test_case "Disabled" `Quick test_of_config_disabled;
134 Alcotest.test_case "Always" `Quick test_of_config_always;
135 Alcotest.test_case "Threshold" `Quick test_of_config_threshold;
136 Alcotest.test_case "custom timeout" `Quick test_of_config_custom_timeout;
137 Alcotest.test_case "above threshold" `Quick
138 test_should_use_above_threshold;
139 Alcotest.test_case "at threshold" `Quick test_should_use_at_threshold;
140 Alcotest.test_case "below threshold" `Quick
141 test_should_use_below_threshold;
142 Alcotest.test_case "disabled always false" `Quick test_should_use_disabled;
143 Alcotest.test_case "always with any body" `Quick test_should_use_always;
144 Alcotest.test_case "always with zero body" `Quick
145 test_should_use_always_zero;
146 Alcotest.test_case "value" `Quick test_default_threshold_value;
147 Alcotest.test_case "defaults" `Quick test_make_defaults;
148 Alcotest.test_case "custom" `Quick test_make_custom;
149 Alcotest.test_case "non-empty" `Quick test_to_string;
150 ] )