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
|
from tests import TestCase, add
from yasm import IntNum
class TIntNum(TestCase):
legal_values = [
0, 1, -1, 2, -2, 17, -17,
2**31-1, -2**31, 2**31, 2**32-1, -2**32,
2**63-1, -2**63-1, 2**63, 2**64, -2**64,
2**127-1, -2**127
]
overflow_values = [
2**127, -2**127-1
]
def test_to_from(self):
for i in self.legal_values:
self.assertEquals(i, int(IntNum(i)))
self.assertEquals(i, long(IntNum(i)))
def test_overflow(self):
for i in self.overflow_values:
self.assertRaises(OverflowError, IntNum, i)
str_values = [
"0", "00000", "1234", "87654321", "010101010", "FADCBEEF"
]
base_values = [2, 8, 10, 12, 16, None, "nasm", "foo"]
def test_from_str(self):
pass
def test_from_str_base(self):
pass
def test_exceptions(self):
self.assertRaises(ZeroDivisionError, IntNum(1).__div__, 0)
IntNum(1) / 1 # make sure the above error is cleared
try: IntNum(1) / 0
except ZeroDivisionError, err:
self.assertEquals('divide by zero', str(err))
def test_xor(self):
a = IntNum(-234)
b = IntNum(432)
c = a ^ b
self.assertEquals(a, -234)
self.assertEquals(b, 432)
self.assertEquals(c, -234 ^ 432)
def test_ixor(self):
a = IntNum(-234)
b = IntNum(432)
a ^= b; b ^= a; a ^= b
self.assertEquals(a, 432)
self.assertEquals(b, -234)
def test_cmp(self):
a = IntNum(-1)
b = IntNum(0)
c = IntNum(1)
self.assert_(a < b < c)
self.assert_(a <= b <= c)
self.assert_(c >= b >= a)
self.assert_(c > b > a)
self.assert_(a != b != c)
def test_abs(self):
a = IntNum(-1)
b = IntNum(0)
c = IntNum(1)
self.assertEquals(abs(a), abs(c))
self.assertEquals(abs(a) - abs(c), abs(b))
add(TIntNum)
|