Tailwind classes in OCaml
1open Tailwind 2 3let contains_substring s sub = 4 let len = String.length s in 5 let sub_len = String.length sub in 6 let rec aux i = 7 if i > len - sub_len then false 8 else if String.sub s i sub_len = sub then true 9 else aux (i + 1) 10 in 11 if sub_len = 0 then true else aux 0 12 13let test_flex_center () = 14 let center = Patterns.flex_center in 15 let result = Css.to_string center in 16 Alcotest.(check bool) "contains flex" (contains_substring result "flex"); 17 Alcotest.(check bool) "contains justify" (contains_substring result "justify"); 18 Alcotest.(check bool) "contains items" (contains_substring result "items") 19 20let test_absolute_center () = 21 let center = Patterns.absolute_center in 22 let result = Css.to_string center in 23 Alcotest.(check bool) "contains absolute" (contains_substring result "absolute"); 24 Alcotest.(check bool) "contains top-1/2" (contains_substring result "top-1/2"); 25 Alcotest.(check bool) "contains left-1/2" (contains_substring result "left-1/2") 26 27let test_stack_default () = 28 let stack = Patterns.stack () in 29 let result = Css.to_string stack in 30 Alcotest.(check bool) "contains flex" (contains_substring result "flex"); 31 Alcotest.(check bool) "non-empty" (String.length result > 0) 32 33let test_stack_with_gap () = 34 let stack = Patterns.stack ~gap:(Size.rem 2.0) () in 35 let result = Css.to_string stack in 36 Alcotest.(check bool) "contains flex" (contains_substring result "flex"); 37 Alcotest.(check bool) "non-empty" (String.length result > 0) 38 39let test_inline_stack () = 40 let inline = Patterns.inline_stack () in 41 let result = Css.to_string inline in 42 Alcotest.(check bool) "contains flex" (contains_substring result "flex"); 43 Alcotest.(check bool) "non-empty" (String.length result > 0) 44 45let test_card () = 46 let card = Patterns.card in 47 let result = Css.to_string card in 48 Alcotest.(check bool) "contains bg-white" (contains_substring result "bg-white"); 49 Alcotest.(check bool) "contains rounded" (contains_substring result "rounded"); 50 Alcotest.(check bool) "contains shadow" (contains_substring result "shadow") 51 52let test_container () = 53 let container = Patterns.container () in 54 let result = Css.to_string container in 55 Alcotest.(check bool) "contains container" (contains_substring result "container") 56 57let test_container_centered () = 58 let container = Patterns.container ~center:true () in 59 let result = Css.to_string container in 60 Alcotest.(check bool) "contains container" (contains_substring result "container"); 61 Alcotest.(check bool) "contains mx-auto" (contains_substring result "mx-auto") 62 63let suite = [ 64 "flex_center", `Quick, test_flex_center; 65 "absolute_center", `Quick, test_absolute_center; 66 "stack_default", `Quick, test_stack_default; 67 "stack_with_gap", `Quick, test_stack_with_gap; 68 "inline_stack", `Quick, test_inline_stack; 69 "card", `Quick, test_card; 70 "container", `Quick, test_container; 71 "container_centered", `Quick, test_container_centered; 72]