Home | History | Annotate | Download | only in tests
      1 from tests import TestCase, add
      2 from yasm import IntNum
      3 
      4 class TIntNum(TestCase):
      5     legal_values = [
      6         0, 1, -1, 2, -2, 17, -17,
      7         2**31-1, -2**31, 2**31, 2**32-1, -2**32,
      8         2**63-1, -2**63-1, 2**63, 2**64, -2**64,
      9         2**127-1, -2**127
     10     ]
     11     overflow_values = [
     12         2**127, -2**127-1
     13     ]
     14 
     15     def test_to_from(self):
     16         for i in self.legal_values:
     17             self.assertEquals(i, int(IntNum(i)))
     18             self.assertEquals(i, long(IntNum(i)))
     19 
     20     def test_overflow(self):
     21         for i in self.overflow_values:
     22             self.assertRaises(OverflowError, IntNum, i)
     23 
     24     str_values = [
     25         "0", "00000", "1234", "87654321", "010101010", "FADCBEEF"
     26     ]
     27     base_values = [2, 8, 10, 12, 16, None, "nasm", "foo"]
     28 
     29     def test_from_str(self):
     30         pass
     31 
     32     def test_from_str_base(self):
     33         pass
     34 
     35     def test_exceptions(self):
     36         self.assertRaises(ZeroDivisionError, IntNum(1).__div__, 0)
     37 
     38         IntNum(1) / 1 # make sure the above error is cleared
     39 
     40         try: IntNum(1) / 0
     41         except ZeroDivisionError, err:
     42             self.assertEquals('divide by zero', str(err))
     43 
     44     def test_xor(self):
     45         a = IntNum(-234)
     46         b = IntNum(432)
     47         c = a ^ b
     48         self.assertEquals(a, -234)
     49         self.assertEquals(b, 432)
     50         self.assertEquals(c, -234 ^ 432)
     51 
     52     def test_ixor(self):
     53         a = IntNum(-234)
     54         b = IntNum(432)
     55         a ^= b; b ^= a; a ^= b
     56         self.assertEquals(a, 432)
     57         self.assertEquals(b, -234)
     58 
     59     def test_cmp(self):
     60         a = IntNum(-1)
     61         b = IntNum(0)
     62         c = IntNum(1)
     63         self.assert_(a < b < c)
     64         self.assert_(a <= b <= c)
     65         self.assert_(c >= b >= a)
     66         self.assert_(c > b > a)
     67         self.assert_(a != b != c)
     68 
     69     def test_abs(self):
     70         a = IntNum(-1)
     71         b = IntNum(0)
     72         c = IntNum(1)
     73 
     74         self.assertEquals(abs(a), abs(c))
     75         self.assertEquals(abs(a) - abs(c), abs(b))
     76 
     77 add(TIntNum)
     78