diff options
Diffstat (limited to 'tools/python-yasm/tests/test_intnum.py')
-rw-r--r-- | tools/python-yasm/tests/test_intnum.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/python-yasm/tests/test_intnum.py b/tools/python-yasm/tests/test_intnum.py new file mode 100644 index 0000000..a222018 --- /dev/null +++ b/tools/python-yasm/tests/test_intnum.py @@ -0,0 +1,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) |