File: enum_tests.ml

package info (click to toggle)
ocaml-deriving-ocsigen 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 628 kB
  • ctags: 1,159
  • sloc: ml: 6,334; makefile: 63; sh: 18
file content (84 lines) | stat: -rw-r--r-- 2,646 bytes parent folder | download | duplicates (2)
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
open Tests_defs
open Deriving_Enum

let nullsum = 
  begin
    let module E = Enum_nullsum in

      assert (E.succ N0 = N1);
      assert (E.succ N1 = N2);
      assert (E.succ N2 = N3);
      assert (try ignore (E.succ N3); false
              with Invalid_argument "succ" -> true);

      assert (try ignore (E.pred N0); false
              with Invalid_argument "pred" -> true);
      assert (E.pred N1 = N0);
      assert (E.pred N2 = N1);
      assert (E.pred N3 = N2);

      assert (E.from_enum N0 = 0);
      assert (E.from_enum N1 = 1);
      assert (E.from_enum N2 = 2);
      assert (E.from_enum N3 = 3);

      assert (E.to_enum 0 = N0);
      assert (E.to_enum 1 = N1);
      assert (E.to_enum 2 = N2);
      assert (E.to_enum 3 = N3);
      assert (try ignore (E.to_enum 4); false
              with Invalid_argument "to_enum" -> true);

      assert (E.enum_from N0 = [N0;N1;N2;N3]);
      assert (E.enum_from N1 = [N1;N2;N3]);
      assert (E.enum_from N2 = [N2;N3]);
      assert (E.enum_from N3 = [N3]);

      assert (E.enum_from_then N0 N1 = [N0;N1;N2;N3]);
      assert (E.enum_from_then N0 N2 = [N0;N2]);
      assert (E.enum_from_then N1 N2 = [N1;N2;N3]);
      assert (E.enum_from_then N1 N3 = [N1;N3]);
      assert (try ignore (E.enum_from_then N3 N3); false
              with Invalid_argument _ -> true);
      assert (try ignore (E.enum_from_then N3 N1); false
              with Invalid_argument _ -> true);

      assert (E.enum_from_to N0 N1 = [N0;N1]);
      assert (E.enum_from_to N1 N3 = [N1;N2;N3]);
      assert (E.enum_from_to N1 N1 = [N1]);
      assert (E.enum_from_to N1 N0 = []);

      assert (E.enum_from_then_to N0 N1 N3 = [N0;N1;N2;N3]);
      assert (E.enum_from_then_to N0 N2 N3 = [N0;N2]);
      assert (E.enum_from_then_to N0 N3 N3 = [N0;N3]);
      assert (try ignore (E.enum_from_then_to N0 N0 N0); false
              with Invalid_argument _ -> true);
  end

let poly0 =
  begin
    let module E = Enum_poly0 in

      assert (E.succ `T0 = `T1);
      assert (E.succ `T1 = `T2);
      assert (E.succ `T2 = `T3);
      assert (try ignore (E.succ `T3); false
              with Invalid_argument "succ" -> true);

      assert (try ignore (E.pred `T0); false
              with Invalid_argument "pred" -> true);
      assert (E.pred `T1 = `T0);
      assert (E.pred `T2 = `T1);
      assert (E.pred `T3 = `T2);

  end
    
let t =
  begin
    ListLabels.iter (Enum_int.enum_from_to (-1000) 1000)
      ~f:(fun i -> 
            assert (Enum_t.succ i = i+1);
            assert (Enum_t.pred i = i-1);
            assert (Enum_t.to_enum i = i);
            assert (Enum_t.from_enum i = i));
  end