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]