summaryrefslogtreecommitdiff
path: root/testsuite/tests/basic-more/sequential_and_or.ml
blob: 926cb9ab58396eaeefc0a949cb92849b798585ee (plain)
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
(* TEST
   include testing
*)

let r = ref 0

let true_effect () =
  incr r;
  print_int !r; print_char ' ';
  true

let false_effect () =
  incr r;
  print_int !r; print_char ' ';
  false

let test i f =
  print_int i;
  print_string ": ";
  print_endline (string_of_bool (f ()))

let s = Bytes.of_string "\000"
let () =
  (* ensure that the string is not constant *)
  Bytes.set s 0 '\001'

let unknown_true =
  Bytes.get s 0 = '\001'

let unknown_false =
  Bytes.get s 0 <> '\001'

let () =
  test 1 (fun () -> true || true);
  test 2 (fun () -> true || false);
  test 3 (fun () -> true || true_effect ());
  test 4 (fun () -> true || false_effect ());
  test 5 (fun () -> true || unknown_true);
  test 6 (fun () -> true || unknown_false);
  test 7 (fun () -> false || true);
  test 8 (fun () -> false || false);
  test 9 (fun () -> false || true_effect ());
  test 10 (fun () -> false || false_effect ());
  test 11 (fun () -> false || unknown_true);
  test 12 (fun () -> false || unknown_false);
  test 13 (fun () -> true_effect () || true);
  test 14 (fun () -> true_effect () || false);
  test 15 (fun () -> true_effect () || true_effect ());
  test 16 (fun () -> true_effect () || false_effect ());
  test 17 (fun () -> true_effect () || unknown_true);
  test 18 (fun () -> true_effect () || unknown_false);
  test 19 (fun () -> false_effect () || true);
  test 20 (fun () -> false_effect () || false);
  test 21 (fun () -> false_effect () || true_effect ());
  test 22 (fun () -> false_effect () || false_effect ());
  test 23 (fun () -> false_effect () || unknown_true);
  test 24 (fun () -> false_effect () || unknown_false);
  test 25 (fun () -> unknown_true || true);
  test 26 (fun () -> unknown_true || false);
  test 27 (fun () -> unknown_true || true_effect ());
  test 28 (fun () -> unknown_true || false_effect ());
  test 29 (fun () -> unknown_true || unknown_true);
  test 30 (fun () -> unknown_true || unknown_false);
  test 31 (fun () -> unknown_false || true);
  test 32 (fun () -> unknown_false || false);
  test 33 (fun () -> unknown_false || true_effect ());
  test 34 (fun () -> unknown_false || false_effect ());
  test 35 (fun () -> unknown_false || unknown_true);
  test 36 (fun () -> unknown_false || unknown_false);
  test 37 (fun () -> true && true);
  test 38 (fun () -> true && false);
  test 39 (fun () -> true && true_effect ());
  test 40 (fun () -> true && false_effect ());
  test 41 (fun () -> true && unknown_true);
  test 42 (fun () -> true && unknown_false);
  test 43 (fun () -> false && true);
  test 44 (fun () -> false && false);
  test 45 (fun () -> false && true_effect ());
  test 46 (fun () -> false && false_effect ());
  test 47 (fun () -> false && unknown_true);
  test 48 (fun () -> false && unknown_false);
  test 49 (fun () -> true_effect () && true);
  test 50 (fun () -> true_effect () && false);
  test 51 (fun () -> true_effect () && true_effect ());
  test 52 (fun () -> true_effect () && false_effect ());
  test 53 (fun () -> true_effect () && unknown_true);
  test 54 (fun () -> true_effect () && unknown_false);
  test 55 (fun () -> false_effect () && true);
  test 56 (fun () -> false_effect () && false);
  test 57 (fun () -> false_effect () && true_effect ());
  test 58 (fun () -> false_effect () && false_effect ());
  test 59 (fun () -> false_effect () && unknown_true);
  test 60 (fun () -> false_effect () && unknown_false);
  test 61 (fun () -> unknown_true && true);
  test 62 (fun () -> unknown_true && false);
  test 63 (fun () -> unknown_true && true_effect ());
  test 64 (fun () -> unknown_true && false_effect ());
  test 65 (fun () -> unknown_true && unknown_true);
  test 66 (fun () -> unknown_true && unknown_false);
  test 67 (fun () -> unknown_false && true);
  test 68 (fun () -> unknown_false && false);
  test 69 (fun () -> unknown_false && true_effect ());
  test 70 (fun () -> unknown_false && false_effect ());
  test 71 (fun () -> unknown_false && unknown_true);
  test 72 (fun () -> unknown_false && unknown_false);
  ()

(* test generation *)

(*
let values = ["true"; "false"; "true_effect ()"; "false_effect ()";
              "unknown_true"; "unknown_false"]
let ops = ["||"; "&&"]
let count = ref 0
let f op v1 v2 =
  incr count;
  Printf.sprintf "  test %i (fun () -> %s %s %s);" !count v1 op v2

let s =
  List.iter (fun op ->
      List.iter (fun v1 ->
          List.iter (fun v2 -> print_endline (f op v1 v2))
            values)
        values)
    ops
*)