Skip to content

Commit 8e9aa4c

Browse files
committed
Lisa domain intervallide võrdluse testid
1 parent 7d9e65e commit 8e9aa4c

File tree

2 files changed

+68
-3
lines changed

2 files changed

+68
-3
lines changed

src/domain/intDomain.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ struct
7373
let eval_binary ((l1, u1): t) (b: Ast.binary) ((l2, u2): t): t =
7474
match b with
7575

76-
| Eq | Ne | Lt | Le | Gt | Ge -> (0, 1) (* Võrdluse tulemus on 0 või 1. Saaks implementeerida täpsemalt, aga meil pole vaja. *)
76+
| Eq | Ne | Lt | Le | Gt | Ge -> (0, 1) (* Võrdluse tulemus on 0 või 1, mis on korrektne, aga mitte täpne. Ettepoole saab implementeerida täpsemad juhud kui vaja. *)
7777

7878
| _ -> failwith "TODO" (* Ei pea implementeerima kõiki operaatoreid, vaid ainult testideks vajalikud. *)
7979
end

test/domain/intDomain_test.ml

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,70 @@ struct
137137
ignore (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_int 3));
138138
ignore (Interval.eval_binary (Interval.of_int 2) Ne (Interval.of_int 3))
139139

140-
140+
let test_eval_binary_lt _ =
141+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_int 2) Lt (Interval.of_int 3));
142+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Lt (Interval.of_int 2));
143+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 3) Lt (Interval.of_int 2));
144+
145+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_int 2) Lt (Interval.of_interval (0, 5)));
146+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 5)) Lt (Interval.of_int 2));
147+
148+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_int 2) Lt (Interval.of_interval (3, 5)));
149+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (3, 5)) Lt (Interval.of_int 2));
150+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Lt (Interval.of_interval (-1, 1)));
151+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_interval (-1, 1)) Lt (Interval.of_int 2));
152+
153+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 6)) Lt (Interval.of_interval (3, 7)));
154+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 10)) Lt (Interval.of_interval (2, 4)));
155+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 4)) Lt (Interval.of_interval (0, 10)));
156+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 2)) Lt (Interval.of_interval (-1, 1)));
157+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (-1, 1)) Lt (Interval.of_interval (0, 2)));
158+
159+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_interval (-1, 1)) Lt (Interval.of_interval (3, 5)));
160+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (3, 5)) Lt (Interval.of_interval (-1, 1)))
161+
162+
let test_eval_binary_gt _ =
163+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Gt (Interval.of_int 3));
164+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Gt (Interval.of_int 2));
165+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_int 3) Gt (Interval.of_int 2));
166+
167+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_int 2) Gt (Interval.of_interval (0, 5)));
168+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 5)) Gt (Interval.of_int 2));
169+
170+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Gt (Interval.of_interval (3, 5)));
171+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_interval (3, 5)) Gt (Interval.of_int 2));
172+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_int 2) Gt (Interval.of_interval (-1, 1)));
173+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (-1, 1)) Gt (Interval.of_int 2));
174+
175+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 6)) Gt (Interval.of_interval (3, 7)));
176+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 10)) Gt (Interval.of_interval (2, 4)));
177+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 4)) Gt (Interval.of_interval (0, 10)));
178+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 2)) Gt (Interval.of_interval (-1, 1)));
179+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (-1, 1)) Gt (Interval.of_interval (0, 2)));
180+
181+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (-1, 1)) Gt (Interval.of_interval (3, 5)));
182+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_interval (3, 5)) Gt (Interval.of_interval (-1, 1)))
183+
184+
let test_eval_binary_eq _ =
185+
assert_equal (Interval.of_int 1) (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_int 2));
186+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_int 3));
187+
188+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_interval (0, 5)));
189+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 5)) Eq (Interval.of_int 2));
190+
191+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_interval (3, 5)));
192+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (3, 5)) Eq (Interval.of_int 2));
193+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_int 2) Eq (Interval.of_interval (-1, 1)));
194+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (-1, 1)) Eq (Interval.of_int 2));
195+
196+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 6)) Eq (Interval.of_interval (2, 6)));
197+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 10)) Eq (Interval.of_interval (2, 4)));
198+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (2, 4)) Eq (Interval.of_interval (0, 10)));
199+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (0, 2)) Eq (Interval.of_interval (-1, 1)));
200+
assert_equal (Interval.of_interval (0, 1)) (Interval.eval_binary (Interval.of_interval (-1, 1)) Eq (Interval.of_interval (0, 2)));
201+
202+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (-1, 1)) Eq (Interval.of_interval (3, 5)));
203+
assert_equal (Interval.of_int 0) (Interval.eval_binary (Interval.of_interval (3, 5)) Eq (Interval.of_interval (-1, 1)))
141204

142205
let test_exclude _ =
143206
assert_equal (Interval.of_interval (3, 5)) (Interval.exclude 6 (Interval.of_interval (3, 6)));
@@ -159,7 +222,9 @@ struct
159222
"sub" >:: test_eval_binary_sub;
160223
"mul" >:: test_eval_binary_mul;
161224
"comparison" >:: test_eval_binary_comparison;
162-
225+
"lt" >:: test_eval_binary_lt;
226+
"gt" >:: test_eval_binary_gt;
227+
"eq" >:: test_eval_binary_eq;
163228
];
164229
"exclude" >:: test_exclude;
165230
]

0 commit comments

Comments
 (0)