package n_ary

  1. Overview
  2. Docs

Source file test_variant.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
open! Base
open Expect_test_helpers_base

type ('a, 'b, 'c) t = ('a, 'b, 'c) N_ary.Variant3.t =
  | Case0 of 'a
  | Case1 of 'b
  | Case2 of 'c
[@@deriving compare, equal, hash, sexp_of]

let case0 = N_ary.Variant3.case0

let%expect_test _ =
  print_s [%sexp (case0 1 : (int, int, int) t)];
  [%expect {| (Case0 1) |}]
;;

let case1 = N_ary.Variant3.case1

let%expect_test _ =
  print_s [%sexp (case1 2 : (int, int, int) t)];
  [%expect {| (Case1 2) |}]
;;

let case2 = N_ary.Variant3.case2

let%expect_test _ =
  print_s [%sexp (case2 2 : (int, int, int) t)];
  [%expect {| (Case2 2) |}]
;;

let is_case0 = N_ary.Variant3.is_case0

let%expect_test _ =
  print_s
    [%sexp
      (List.filter [ Case0 1; Case1 2; Case2 3 ] ~f:is_case0 : (int, int, int) t list)];
  [%expect {| ((Case0 1)) |}]
;;

let is_case1 = N_ary.Variant3.is_case1

let%expect_test _ =
  print_s
    [%sexp
      (List.filter [ Case0 1; Case1 2; Case2 3 ] ~f:is_case1 : (int, int, int) t list)];
  [%expect {| ((Case1 2)) |}]
;;

let is_case2 = N_ary.Variant3.is_case2

let%expect_test _ =
  print_s
    [%sexp
      (List.filter [ Case0 1; Case1 2; Case2 3 ] ~f:is_case2 : (int, int, int) t list)];
  [%expect {| ((Case2 3)) |}]
;;

let get_case0 = N_ary.Variant3.get_case0

let%expect_test _ =
  print_s [%sexp (List.filter_map [ Case0 1; Case1 2; Case2 3 ] ~f:get_case0 : int list)];
  [%expect {| (1) |}]
;;

let get_case1 = N_ary.Variant3.get_case1

let%expect_test _ =
  print_s [%sexp (List.filter_map [ Case0 1; Case1 2; Case2 3 ] ~f:get_case1 : int list)];
  [%expect {| (2) |}]
;;

let get_case2 = N_ary.Variant3.get_case2

let%expect_test _ =
  print_s [%sexp (List.filter_map [ Case0 1; Case1 2; Case2 3 ] ~f:get_case2 : int list)];
  [%expect {| (3) |}]
;;

let get_case0_exn = N_ary.Variant3.get_case0_exn

let%expect_test _ =
  print_s [%sexp (List.map [ Case0 1; Case0 2 ] ~f:get_case0_exn : int list)];
  [%expect {| (1 2) |}]
;;

let get_case1_exn = N_ary.Variant3.get_case1_exn

let%expect_test _ =
  print_s [%sexp (List.map [ Case1 1; Case1 2 ] ~f:get_case1_exn : int list)];
  [%expect {| (1 2) |}]
;;

let get_case2_exn = N_ary.Variant3.get_case2_exn

let%expect_test _ =
  print_s [%sexp (List.map [ Case2 1; Case2 2 ] ~f:get_case2_exn : int list)];
  [%expect {| (1 2) |}]
;;

let map = N_ary.Variant3.map

let%expect_test _ =
  print_s
    [%sexp
      (List.map
         [ Case0 1; Case1 2; Case2 3 ]
         ~f:(map ~f0:(( + ) 10) ~f1:(( + ) 20) ~f2:(( + ) 30))
       : (int, int, int) t list)];
  [%expect {|
    ((Case0 11)
     (Case1 22)
     (Case2 33)) |}]
;;

let map_case0 = N_ary.Variant3.map_case0

let%expect_test _ =
  print_s
    [%sexp
      (List.map [ Case0 1; Case1 2; Case2 3 ] ~f:(map_case0 ~f:(( + ) 10))
       : (int, int, int) t list)];
  [%expect {|
    ((Case0 11)
     (Case1 2)
     (Case2 3)) |}]
;;

let map_case1 = N_ary.Variant3.map_case1

let%expect_test _ =
  print_s
    [%sexp
      (List.map [ Case0 1; Case1 2; Case2 3 ] ~f:(map_case1 ~f:(( + ) 20))
       : (int, int, int) t list)];
  [%expect {|
    ((Case0 1)
     (Case1 22)
     (Case2 3)) |}]
;;

let map_case2 = N_ary.Variant3.map_case2

let%expect_test _ =
  print_s
    [%sexp
      (List.map [ Case0 1; Case1 2; Case2 3 ] ~f:(map_case2 ~f:(( + ) 20))
       : (int, int, int) t list)];
  [%expect {|
    ((Case0 1)
     (Case1 2)
     (Case2 23)) |}]
;;
OCaml

Innovation. Community. Security.