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);
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
);
77 (* Directly access implementation module for basic types *)
78 ListLabels.iter
(Deriving_Enum.Enum_int.enum_from_to
(-1000) 1000)
80 assert (Enum_t.succ i
= i
+1);
81 assert (Enum_t.pred i
= i
-1);
82 assert (Enum_t.to_enum i
= i
);
83 assert (Enum_t.from_enum i
= i
));