import deriving 0.1.1a
[deriving.git] / tests / enum_tests.ml
blobfbd0353b18cc679fbd5a451fc3802f4aa777453f
1 open Defs
3 let nullsum =
4 begin
5 let module E = Enum_nullsum in
7 assert (E.succ N0 = N1);
8 assert (E.succ N1 = N2);
9 assert (E.succ N2 = N3);
10 assert (try ignore (E.succ N3); false
11 with Invalid_argument "succ" -> true);
13 assert (try ignore (E.pred N0); false
14 with Invalid_argument "pred" -> true);
15 assert (E.pred N1 = N0);
16 assert (E.pred N2 = N1);
17 assert (E.pred N3 = N2);
19 assert (E.from_enum N0 = 0);
20 assert (E.from_enum N1 = 1);
21 assert (E.from_enum N2 = 2);
22 assert (E.from_enum N3 = 3);
24 assert (E.to_enum 0 = N0);
25 assert (E.to_enum 1 = N1);
26 assert (E.to_enum 2 = N2);
27 assert (E.to_enum 3 = N3);
28 assert (try ignore (E.to_enum 4); false
29 with Invalid_argument "to_enum" -> true);
31 assert (E.enum_from N0 = [N0;N1;N2;N3]);
32 assert (E.enum_from N1 = [N1;N2;N3]);
33 assert (E.enum_from N2 = [N2;N3]);
34 assert (E.enum_from N3 = [N3]);
36 assert (E.enum_from_then N0 N1 = [N0;N1;N2;N3]);
37 assert (E.enum_from_then N0 N2 = [N0;N2]);
38 assert (E.enum_from_then N1 N2 = [N1;N2;N3]);
39 assert (E.enum_from_then N1 N3 = [N1;N3]);
40 assert (try ignore (E.enum_from_then N3 N3); false
41 with Invalid_argument _ -> true);
42 assert (try ignore (E.enum_from_then N3 N1); false
43 with Invalid_argument _ -> true);
45 assert (E.enum_from_to N0 N1 = [N0;N1]);
46 assert (E.enum_from_to N1 N3 = [N1;N2;N3]);
47 assert (E.enum_from_to N1 N1 = [N1]);
48 assert (E.enum_from_to N1 N0 = []);
50 assert (E.enum_from_then_to N0 N1 N3 = [N0;N1;N2;N3]);
51 assert (E.enum_from_then_to N0 N2 N3 = [N0;N2]);
52 assert (E.enum_from_then_to N0 N3 N3 = [N0;N3]);
53 assert (try ignore (E.enum_from_then_to N0 N0 N0); false
54 with Invalid_argument _ -> true);
55 end
57 let poly0 =
58 begin
59 let module E = Enum_poly0 in
61 assert (E.succ `T0 = `T1);
62 assert (E.succ `T1 = `T2);
63 assert (E.succ `T2 = `T3);
64 assert (try ignore (E.succ `T3); false
65 with Invalid_argument "succ" -> true);
67 assert (try ignore (E.pred `T0); false
68 with Invalid_argument "pred" -> true);
69 assert (E.pred `T1 = `T0);
70 assert (E.pred `T2 = `T1);
71 assert (E.pred `T3 = `T2);
73 end
75 let t =
76 begin
77 ListLabels.iter (Enum.Enum_int.enum_from_to (-1000) 1000)
78 ~f:(fun i ->
79 assert (Enum_t.succ i = i+1);
80 assert (Enum_t.pred i = i-1);
81 assert (Enum_t.to_enum i = i);
82 assert (Enum_t.from_enum i = i));
83 end