| 8 | |
| 9 | |
| 10 | def test_util_rns(): |
| 11 | with pytest.raises(BaseException): |
| 12 | util.RNSBase([sealapi.Modulus(0)]) |
| 13 | with pytest.raises(BaseException): |
| 14 | util.RNSBase([sealapi.Modulus(0), sealapi.Modulus(3)]) |
| 15 | with pytest.raises(BaseException): |
| 16 | util.RNSBase([sealapi.Modulus(2), sealapi.Modulus(3), sealapi.Modulus(4)]) |
| 17 | |
| 18 | testcase = util.RNSBase([sealapi.Modulus(2), sealapi.Modulus(3)]) |
| 19 | assert testcase[0] == 2 |
| 20 | assert testcase.size() == 2 |
| 21 | assert testcase.contains(sealapi.Modulus(2)) is True |
| 22 | assert testcase.contains(sealapi.Modulus(7)) is False |
| 23 | |
| 24 | base1 = util.RNSBase([sealapi.Modulus(2), sealapi.Modulus(3)]) |
| 25 | base2 = util.RNSBase([sealapi.Modulus(2), sealapi.Modulus(3), sealapi.Modulus(11)]) |
| 26 | base3 = util.RNSBase([sealapi.Modulus(5), sealapi.Modulus(3), sealapi.Modulus(11)]) |
| 27 | assert base1.is_subbase_of(base2) is True |
| 28 | assert base1.is_proper_subbase_of(base2) is True |
| 29 | assert base1.is_subbase_of(base3) is False |
| 30 | assert base2.is_superbase_of(base1) is True |
| 31 | assert base2.is_proper_superbase_of(base1) is True |
| 32 | assert base3.is_superbase_of(base1) is False |
| 33 | |
| 34 | base1 = base1.extend(sealapi.Modulus(11)) |
| 35 | assert base1.size() == 3 |
| 36 | base2 = util.RNSBase([sealapi.Modulus(23), sealapi.Modulus(37), sealapi.Modulus(53)]) |
| 37 | base1 = base1.extend(base2) |
| 38 | assert base1.size() == 6 |
| 39 | |
| 40 | base1 = base1.drop(sealapi.Modulus(11)) |
| 41 | assert base1.size() == 5 |
| 42 | base1 = base1.drop() |
| 43 | base1 = base1.drop() |
| 44 | assert base1.size() == 3 |
| 45 | |
| 46 | base = util.RNSBase([sealapi.Modulus(3), sealapi.Modulus(5)]) |
| 47 | dec = base.decompose([14, 0]) |
| 48 | assert dec == [2, 4] |
| 49 | comp = base.compose(dec) |
| 50 | assert comp == [14, 0] |
| 51 | |
| 52 | base = util.RNSBase([sealapi.Modulus(3), sealapi.Modulus(5)]) |
| 53 | dec = base.decompose_array([14, 0], 1) |
| 54 | assert dec == [2, 4] |
| 55 | comp = base.compose_array(dec, 1) |
| 56 | assert comp == [14, 0] |
| 57 | |
| 58 | assert base.base_prod() == 15 |
| 59 | |
| 60 | |
| 61 | def test_util_baseconverter_sanity(): |