Beispiel #1
0
    def test_long(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00\x00\x00\x00\x00' + \
            b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_long() == 0
            assert b.read_long() == 0
            assert b.peek_long() == 1
            assert b.read_long() == 1
            assert b.peek_long() == 281474976710656
            assert b.read_long() == 281474976710656
            assert b.peek_long() == -1
            assert b.read_long() == -1

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_long() == 0
            assert b.read_long() == 0
            assert b.peek_long() == 72057594037927936
            assert b.read_long() == 72057594037927936
            assert b.peek_long() == 256
            assert b.read_long() == 256
            assert b.peek_long() == -1
            assert b.read_long() == -1
Beispiel #2
0
    def test_ulong(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00\x00\x00\x00\x00' + \
            b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_ulong() == 0
            assert b.read_ulong() == 0
            assert b.peek_ulong() == 1
            assert b.read_ulong() == 1
            assert b.peek_ulong() == 281474976710656
            assert b.read_ulong() == 281474976710656
            assert b.peek_ulong() == 18446744073709551615
            assert b.read_ulong() == 18446744073709551615

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_ulong() == 0
            assert b.read_ulong() == 0
            assert b.peek_ulong() == 72057594037927936
            assert b.read_ulong() == 72057594037927936
            assert b.peek_ulong() == 256
            assert b.read_ulong() == 256
            assert b.peek_ulong() == 18446744073709551615
            assert b.read_ulong() == 18446744073709551615
Beispiel #3
0
    def test_bool(self):
        data = b'\x01\x00'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_bool(True)
            b.write_bool(False)
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_bool(True)
            b.write_bool(False)
            assert bytes(b) == data
Beispiel #4
0
    def test_hex(self):
        data = b'\x00\x01\xFF'
        hex = '0001ff'

        with binary.Buffer(data) as b:
            assert b.peek_hex(3) == hex
            assert b.read_hex(3) == hex
Beispiel #5
0
    def test_hex(self):
        data = b'\x00\x01\xFF\x00'
        hex = '0001ff'

        with binary.Buffer() as b:
            b.write_hex(hex)
            b.write_hex(hex, length=1)
            assert bytes(b) == data
Beispiel #6
0
    def test_ubyte(self):
        data = b'\x00\x01\xFF'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_ubyte(0)
            b.write_ubyte(1)
            b.write_ubyte(255)
            with pytest.raises(struct.error):
                b.write_ubyte(-1)
            with pytest.raises(struct.error):
                b.write_ubyte('a')
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_ubyte(0)
            b.write_ubyte(1)
            b.write_ubyte(255)
            assert bytes(b) == data
Beispiel #7
0
    def test_ubyte(self):
        data = b'\x00\x01\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_ubyte() == 0
            assert b.read_ubyte() == 0
            assert b.peek_ubyte() == 1
            assert b.read_ubyte() == 1
            assert b.peek_ubyte() == 255
            assert b.read_ubyte() == 255

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_ubyte() == 0
            assert b.read_ubyte() == 0
            assert b.peek_ubyte() == 1
            assert b.read_ubyte() == 1
            assert b.peek_ubyte() == 255
            assert b.read_ubyte() == 255
Beispiel #8
0
    def test_float(self):
        data = b'\x00\x00\x00\x00' + b'\x3F\x80\x00\x00' + b'\x7F\xC0\x00\x00'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_float(0.)
            b.write_float(1.)
            b.write_float(float('NaN'))
            with pytest.raises(struct.error):
                b.write_float('a')
            assert bytes(b) == data

        data = b'\x00\x00\x00\x00' + b'\x00\x00\x80\x3F' + b'\x00\x00\xC0\x7F'

        with binary.Buffer(endian=binary.LE) as b:
            b.write_float(0.)
            b.write_float(1.)
            b.write_float(float('NaN'))
            assert bytes(b) == data
Beispiel #9
0
    def test_bool(self):
        data = b'\x00\x01\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_bool() == False
            assert b.read_bool() == False
            assert b.peek_bool() == True
            assert b.read_bool() == True
            assert b.peek_bool() == True
            assert b.read_bool() == True

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_bool() == False
            assert b.read_bool() == False
            assert b.peek_bool() == True
            assert b.read_bool() == True
            assert b.peek_bool() == True
            assert b.read_bool() == True
Beispiel #10
0
    def test_float(self):
        data = b'\x00\x00\x00\x00' + b'\x3F\x80\x00\x00' + b'\x7F\xC0\x00\x00'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_float() == 0.
            assert b.read_float() == 0.
            assert b.peek_float() == 1.
            assert b.read_float() == 1.
            assert math.isnan(b.peek_float()) == True
            assert math.isnan(b.read_float()) == True

        data = b'\x00\x00\x00\x00' + b'\x00\x00\x80\x3F' + b'\x00\x00\xC0\x7F'

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_float() == 0.
            assert b.read_float() == 0.
            assert b.peek_float() == 1.
            assert b.read_float() == 1.
            assert math.isnan(b.peek_float()) == True
            assert math.isnan(b.read_float()) == True
Beispiel #11
0
    def test_ushort(self):
        data = b'\x00\x00' + b'\x00\x01' + b'\x01\x00' + b'\xFF\xFF'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_ushort(0)
            b.write_ushort(1)
            b.write_ushort(256)
            b.write_ushort(65535)
            with pytest.raises(struct.error):
                b.write_ushort(-1)
            with pytest.raises(struct.error):
                b.write_ushort('a')
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_ushort(0)
            b.write_ushort(256)
            b.write_ushort(1)
            b.write_ushort(65535)
            assert bytes(b) == data
Beispiel #12
0
    def test_double(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x3F\xF0\x00\x00\x00\x00\x00\x00' + \
            b'\x7F\xF8\x00\x00\x00\x00\x00\x00'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_double(0.)
            b.write_double(1.)
            b.write_double(float('NaN'))
            assert bytes(b) == data

        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\xF0\x3F' + \
            b'\x00\x00\x00\x00\x00\x00\xF8\x7F'

        with binary.Buffer(endian=binary.LE) as b:
            b.write_double(0.)
            b.write_double(1.)
            b.write_double(float('NaN'))
            assert bytes(b) == data
Beispiel #13
0
    def test_text(self):
        data = b'\xC3\xA8\x2E\xC3\xA9' + b'\xC3\xA8\x2E\xC3\xA9' + \
            b'\xE8\x2E\xE9' + b'\xC3\xA8'
        text = 'è.é'

        with binary.Buffer() as b:
            b.write_text(text)
            b.write_text(text, encoding='utf-8')
            b.write_text(text, encoding='iso-8859-1')
            b.write_text(text, length=2)
            assert bytes(b) == data
Beispiel #14
0
    def test_int(self):
        data = b'\x00\x00\x00\x00' + b'\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00' + b'\xFF\xFF\xFF\xFF'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_int(0)
            b.write_int(1)
            b.write_int(65536)
            b.write_int(-1)
            with pytest.raises(struct.error):
                b.write_int(2147483648)
            with pytest.raises(struct.error):
                b.write_int('a')
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_int(0)
            b.write_int(16777216)
            b.write_int(256)
            b.write_int(-1)
            assert bytes(b) == data
Beispiel #15
0
    def test_ushort(self):
        data = b'\x00\x00' + b'\x00\x01' + b'\x01\x00' + b'\xFF\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_ushort() == 0
            assert b.read_ushort() == 0
            assert b.peek_ushort() == 1
            assert b.read_ushort() == 1
            assert b.peek_ushort() == 256
            assert b.read_ushort() == 256
            assert b.peek_ushort() == 65535
            assert b.read_ushort() == 65535

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_ushort() == 0
            assert b.read_ushort() == 0
            assert b.peek_ushort() == 256
            assert b.read_ushort() == 256
            assert b.peek_ushort() == 1
            assert b.read_ushort() == 1
            assert b.peek_ushort() == 65535
            assert b.read_ushort() == 65535
Beispiel #16
0
    def test_ulong(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00\x00\x00\x00\x00' + \
            b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_ulong(0)
            b.write_ulong(1)
            b.write_ulong(281474976710656)
            b.write_ulong(18446744073709551615)
            with pytest.raises(struct.error):
                b.write_ulong(-1)
            with pytest.raises(struct.error):
                b.write_ulong('a')
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_ulong(0)
            b.write_ulong(72057594037927936)
            b.write_ulong(256)
            b.write_ulong(18446744073709551615)
            assert bytes(b) == data
Beispiel #17
0
    def test_long(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00\x00\x00\x00\x00' + \
            b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'

        with binary.Buffer(endian=binary.BE) as b:
            b.write_long(0)
            b.write_long(1)
            b.write_long(281474976710656)
            b.write_long(-1)
            with pytest.raises(struct.error):
                b.write_long(9223372036854775808)
            with pytest.raises(struct.error):
                b.write_long('a')
            assert bytes(b) == data

        with binary.Buffer(endian=binary.LE) as b:
            b.write_long(0)
            b.write_long(72057594037927936)
            b.write_long(256)
            b.write_long(-1)
            assert bytes(b) == data
Beispiel #18
0
    def test_uint(self):
        data = b'\x00\x00\x00\x00' + b'\x00\x00\x00\x01' + \
            b'\x00\x01\x00\x00' + b'\xFF\xFF\xFF\xFF'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_uint() == 0
            assert b.read_uint() == 0
            assert b.peek_uint() == 1
            assert b.read_uint() == 1
            assert b.peek_uint() == 65536
            assert b.read_uint() == 65536
            assert b.peek_uint() == 4294967295
            assert b.read_uint() == 4294967295

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_uint() == 0
            assert b.read_uint() == 0
            assert b.peek_uint() == 16777216
            assert b.read_uint() == 16777216
            assert b.peek_uint() == 256
            assert b.read_uint() == 256
            assert b.peek_uint() == 4294967295
            assert b.read_uint() == 4294967295
Beispiel #19
0
    def test_double(self):
        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x3F\xF0\x00\x00\x00\x00\x00\x00' + \
            b'\x7F\xF8\x00\x00\x00\x00\x00\x00'

        with binary.Buffer(data, endian=binary.BE) as b:
            assert b.peek_double() == 0.
            assert b.read_double() == 0.
            assert b.peek_double() == 1.
            assert b.read_double() == 1.
            assert math.isnan(b.peek_double()) == True
            assert math.isnan(b.read_double()) == True

        data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \
            b'\x00\x00\x00\x00\x00\x00\xF0\x3F' + \
            b'\x00\x00\x00\x00\x00\x00\xF8\x7F'

        with binary.Buffer(data, endian=binary.LE) as b:
            assert b.peek_double() == 0.
            assert b.read_double() == 0.
            assert b.peek_double() == 1.
            assert b.read_double() == 1.
            assert math.isnan(b.peek_double()) == True
            assert math.isnan(b.read_double()) == True
Beispiel #20
0
    def test_text(self):
        data = b'\xC3\xA8\x2E\xC3\xA9' + b'\xC3\xA8\x2E\xC3\xA9' + \
            b'\xC3\xA8\x2E\xC3\xA9\x00\xC3\xA8\x2E\xC3\xA9' + \
            b'\xE8\x2E\xE9' + b'\xC3\xA8\x2E\xC3\xA9'
        text = 'è.é'

        with binary.Buffer(data) as b:
            assert b.peek_text(5) == text
            assert b.read_text(5) == text
            assert b.peek_text(5, encoding='utf-8') == text
            assert b.read_text(5, encoding='utf-8') == text
            assert b.peek_text(11) == text
            assert b.read_text(11) == text
            assert b.peek_text(3, encoding='iso-8859-1') == text
            assert b.read_text(3, encoding='iso-8859-1') == text
            with pytest.raises(UnicodeDecodeError):
                b.peek_text(5, encoding='utf-16be', error='strict')
            with pytest.raises(UnicodeDecodeError):
                b.read_text(5, encoding='utf-16be', error='strict')
Beispiel #21
0
 def test_fill(self, temp_file):
     with binary.Buffer() as b:
         b.fill(10)
         b.fill(5, b'\xFF')
         b.seek(0)
         assert b.read() == test_data
Beispiel #22
0
 def test_peek(self):
     with binary.Buffer(test_data) as b:
         assert b.peek(len(test_data)) == test_data
         assert b.tell() == 0
Beispiel #23
0
 def test_buffer_as_bytes(self):
     with binary.Buffer(test_data) as b:
         assert bytes(b) == test_data
Beispiel #24
0
 def test_create_buffer(self):
     with binary.Buffer(test_data) as b:
         assert b.read() == test_data