aboutsummaryrefslogtreecommitdiff
path: root/tools/python-yasm/tests/test_intnum.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/python-yasm/tests/test_intnum.py')
-rw-r--r--tools/python-yasm/tests/test_intnum.py77
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)