def test_explicit(self): _set_default_endian('big') for i, sa in [(0, '0'), (1, '1'), (2, '10'), (3, '11'), (25, '11001'), (265, '100001001'), (3691038, '1110000101001000011110')]: ab = bitarray(sa, 'big') al = bitarray(sa[::-1], 'little') self.assertEQUAL(int2ba(i), ab) self.assertEQUAL(int2ba(i, endian='big'), ab) self.assertEQUAL(int2ba(i, endian='little'), al) self.assertEqual(ba2int(ab), ba2int(al), i)
def test_hex2ba_errors(self): self.assertRaises(TypeError, hex2ba, 0) for endian in 'little', 'big': _set_default_endian(endian) self.assertRaises(ValueError, hex2ba, '01a7g89') self.assertRaises(UnicodeEncodeError, hex2ba, u'10\u20ac') # check for NUL bytes for b in b'\0', b'\0f', b'f\0', b'\0ff', b'f\0f', b'ff\0': self.assertRaises(ValueError, hex2ba, b)
def test_hex2ba(self): _set_default_endian('big') self.assertEqual(hex2ba(''), bitarray()) for c in 'e', 'E', b'e', b'E', unicode('e'), unicode('E'): a = hex2ba(c) self.assertEqual(a.to01(), '1110') self.assertEqual(a.endian(), 'big') self.assertEQUAL(hex2ba('01'), bitarray('00000001', 'big')) self.assertEQUAL(hex2ba('08', 'little'), bitarray('00000001', 'little')) self.assertRaises(Exception, hex2ba, '01a7x89') self.assertRaises(TypeError, hex2ba, 0)
def test_round_trip(self): s = ''.join(choice(hexdigits) for _ in range(randint(20, 100))) for default_endian in 'big', 'little': _set_default_endian(default_endian) a = hex2ba(s) self.check_obj(a) self.assertEqual(len(a) % 4, 0) self.assertEqual(a.endian(), default_endian) t = ba2hex(a) self.assertEqual(t, s.lower()) b = hex2ba(t, default_endian) self.assertEQUAL(a, b)
def test_simple(self): self.assertRaises(TypeError, strip, '0110') self.assertRaises(TypeError, strip, bitarray(), 123) self.assertRaises(ValueError, strip, bitarray(), 'up') for default_endian in 'big', 'little': _set_default_endian(default_endian) a = bitarray('00010110000') self.assertEQUAL(strip(a), bitarray('0001011')) self.assertEQUAL(strip(a, 'left'), bitarray('10110000')) self.assertEQUAL(strip(a, 'both'), bitarray('1011')) b = frozenbitarray('00010110000') c = strip(b, 'both') self.assertEqual(c, bitarray('1011')) self.assertIsType(c, 'frozenbitarray')
def test_hex2ba(self): _set_default_endian('big') self.assertEqual(hex2ba(''), bitarray()) for c in 'e', 'E', b'e', b'E', u'e', u'E': a = hex2ba(c) self.assertEqual(a.to01(), '1110') self.assertEqual(a.endian(), 'big') self.assertEQUAL(hex2ba('01'), bitarray('0000 0001', 'big')) self.assertEQUAL(hex2ba('08', 'little'), bitarray('0000 0001', 'little')) self.assertEQUAL(hex2ba('aD'), bitarray('1010 1101', 'big')) self.assertEQUAL(hex2ba(b'10aF'), bitarray('0001 0000 1010 1111', 'big')) self.assertEQUAL(hex2ba(b'10aF', 'little'), bitarray('1000 0000 0101 1111', 'little'))
def test_round_trip(self): for i in range(100): s = ''.join(choice(hexdigits) for _ in range(randint(0, 1000))) for default_endian in 'big', 'little': _set_default_endian(default_endian) a = hex2ba(s) self.assertEqual(len(a) % 4, 0) self.assertEqual(a.endian(), default_endian) t = ba2hex(a) self.assertEqual(t, s.lower()) b = hex2ba(t, default_endian) self.assertEQUAL(a, b) # test simple encode / decode implementation self.assertEQUAL(a, self.hex2ba(t)) self.assertEqual(t, self.ba2hex(a))
def test_strip1(self): self.assertRaises(TypeError, strip, '0110') self.assertRaises(TypeError, strip, bitarray(), 123) self.assertRaises(ValueError, strip, bitarray(), 'up') for default_endian in 'big', 'little': _set_default_endian(default_endian) a = bitarray('00010110000') self.assertEQUAL(strip(a), bitarray('0001011')) self.assertEQUAL(strip(a, 'left'), bitarray('10110000')) self.assertEQUAL(strip(a, 'both'), bitarray('1011')) b = frozenbitarray('00010110000') self.assertEqual(strip(b, 'both'), bitarray('1011')) for mode in 'left', 'right', 'both': self.assertEqual(strip(bitarray('000'), mode), bitarray()) self.assertEqual(strip(bitarray(), mode), bitarray())
def test_1(self): for default_endian in 'big', 'little': _set_default_endian(default_endian) a = zeros(0) self.assertEqual(a, bitarray()) self.assertEqual(a.endian(), default_endian) b = zeros(0, endian=None) self.assertEqual(b.endian(), default_endian) for n in range(100): a = zeros(n) self.assertEqual(a, bitarray(n * '0')) for endian in 'big', 'little': a = zeros(3, endian) self.assertEqual(a, bitarray('000')) self.assertEqual(a.endian(), endian)
def test_1(self): for default_endian in 'big', 'little': _set_default_endian(default_endian) a = urandom(0) self.assertEqual(a, bitarray()) self.assertEqual(a.endian(), default_endian) b = urandom(0, endian=None) self.assertEqual(b.endian(), default_endian) for n in range(100): a = urandom(n) self.assertEqual(len(a), n) self.assertEqual(b.endian(), default_endian) a = urandom(1000) b = urandom(1000) self.assertNotEqual(a, b) self.assertTrue(400 < a.count() < 600) self.assertTrue(400 < b.count() < 600)
def test_basic(self): for default_endian in 'big', 'little': _set_default_endian(default_endian) a = urandom(0) self.assertEqual(a, bitarray()) self.assertEqual(a.endian(), default_endian) a = urandom(7, endian=None) self.assertEqual(len(a), 7) self.assertEqual(a.endian(), default_endian) for n in range(50): a = urandom(n) self.assertEqual(len(a), n) self.assertEqual(a.endian(), default_endian) for endian in 'big', 'little': a = urandom(11, endian) self.assertEqual(len(a), 11) self.assertEqual(a.endian(), endian)
def test_explicit(self): _set_default_endian('big') for i, sa in [(0, '0'), (1, '1'), (2, '10'), (3, '11'), (25, '11001'), (265, '100001001'), (3691038, '1110000101001000011110')]: ab = bitarray(sa, 'big') al = bitarray(sa[::-1], 'little') self.assertEQUAL(int2ba(i), ab) self.assertEQUAL(int2ba(i, endian='big'), ab) self.assertEQUAL(int2ba(i, endian='little'), al) self.assertEqual(ba2int(ab), ba2int(al), i) if i == 0 or i >= 512: continue for n in range(9, 32): for endian in 'big', 'little': a = int2ba(i, length=n, endian=endian) self.assertEqual(a.endian(), endian) self.assertEqual(len(a), n) if endian == 'big': f = a.index(1) self.assertEqual(a[:f], bitarray(f * '0')) self.assertEqual(a[f:], ab)
def test_basic(self): for default_endian in 'big', 'little': _set_default_endian(default_endian) a = zeros(0) self.assertEqual(a, bitarray()) self.assertEqual(a.endian(), default_endian) a = zeros(0, endian=None) self.assertEqual(len(a), 0) self.assertEqual(a.endian(), default_endian) for n in range(100): a = zeros(n) self.assertEqual(len(a), n) self.assertFalse(a.any()) self.assertEqual(a.count(1), 0) self.assertEqual(a, bitarray(n * '0')) for endian in 'big', 'little': a = zeros(3, endian) self.assertEqual(a, bitarray('000')) self.assertEqual(a.endian(), endian)
def test_base2ba(self): _set_default_endian('big') for c in 'e', 'E', b'e', b'E', u'e', u'E': a = base2ba(16, c) self.assertEqual(a.to01(), '1110') self.assertEqual(a.endian(), 'big')