Ejemplo n.º 1
0
 def test_zeros_and_ones(self):
     for endian in 'little', 'big':
         for n in range(100):
             a = zeros(n, endian)
             s = serialize(a)
             self.assertEqual(s[1:], b'\0' * bits2bytes(n))
             self.assertEQUAL(a, deserialize(s))
             a.setall(1)
             self.assertEQUAL(a, deserialize(serialize(a)))
Ejemplo n.º 2
0
    def test_invalid_bytes(self):
        self.assertRaises(ValueError, deserialize, b'')

        for i in range(256):
            b = bytes(bytearray([i]))
            if i == 0 or i == 16:
                self.assertEqual(deserialize(b), bitarray())
            else:
                self.assertRaises(ValueError, deserialize, b)

            b += b'\0'
            if i < 32 and i % 16 < 8:
                self.assertEqual(deserialize(b), zeros(8 - i % 8))
            else:
                self.assertRaises(ValueError, deserialize, b)
Ejemplo n.º 3
0
    def object_hook(self, obj):
        if isinstance(obj, dict) and len(obj) == 1:
            if 'bitarray_b64' in obj:
                return deserialize(b64decode(obj['bitarray_b64']))

            if 'bitarray' in obj:
                return bitarray(obj['bitarray'])

        return obj
Ejemplo n.º 4
0
 def test_bits_ignored(self):
     # the unused bits (with the last bytes) are ignored
     for b, a in [
         (b'\x07\x01', bitarray('1', 'little')),
         (b'\x07\x03', bitarray('1', 'little')),
         (b'\x07\xff', bitarray('1', 'little')),
         (b'\x17\x80', bitarray('1', 'big')),
         (b'\x17\xc0', bitarray('1', 'big')),
         (b'\x17\xff', bitarray('1', 'big')),
     ]:
         self.assertEQUAL(deserialize(b), a)
Ejemplo n.º 5
0
 def test_explicit(self):
     for a, b in [
         (bitarray(0, 'little'), b'\x00'),
         (bitarray(0, 'big'), b'\x10'),
         (bitarray('1', 'little'), b'\x07\x01'),
         (bitarray('1', 'big'), b'\x17\x80'),
         (bitarray('11110000', 'little'), b'\x00\x0f'),
         (bitarray('11110000', 'big'), b'\x10\xf0'),
     ]:
         self.assertEqual(serialize(a), b)
         self.assertEQUAL(deserialize(b), a)
Ejemplo n.º 6
0
 def test_random(self):
     for a in self.randombitarrays():
         b = deserialize(serialize(a))
         self.assertEQUAL(a, b)
         self.check_obj(b)
Ejemplo n.º 7
0
    def object_hook(self, obj):
        if isinstance(obj, dict) and len(obj) == 1 and 'bitarray' in obj:
            return deserialize(standard_b64decode(obj['bitarray']))

        return obj