A batteries included HTTP/1.1 client in OCaml
at main 150 lines 5.5 kB view raw
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 ] )