summaryrefslogtreecommitdiff
path: root/src/test/lib/tests/test_mod.sail
blob: 7f078bae5e6606d5999abd8c898d143a18fbc4ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function unit test () = {
  test_assert ("modpospos_exact", (21 mod 7) == 0);
  test_assert ("modposneg_exact", (21 mod -7) == 0);
  test_assert ("modnegpos_exact", (-21 mod 7) == 0);
  test_assert ("modnegneg_exact", (-21 mod -7) == 0);

  test_assert ("modpospos_approx", (21 mod 8) == 5);
  test_assert ("modposneg_approx", (21 mod -8) == 5);
  test_assert ("modnegpos_approx", (-21 mod 8) == -5);
  test_assert ("modnegneg_approx", (-21 mod -8) == -5);
 
  (* XXX how to test this? Type checker should catch?
  test_assert ("mod_zero", (21 mod 0) == undefined); *)

  test_assert("mod_vec_range_pos", (0x7 mod 5) == 2);
  test_assert("mod_vec_range_neg", (0xf mod 5) == 0);

  test_assert("mod_vec_pos", (0x7 mod 0x5) == 0x2);
  test_assert("mod_vec_neg", (0xf mod 0x5) == 0x0);
  test_assert("mod_vec_pos_neg", (0x7 mod 0x8) == 0x7);
  test_assert("mod_vec_neg_neg", (0xf mod 0x8) == 0x7);
}