示例#1
0
def test_read():
    buffer = Buffer()
    buffer.add(b"spam")
    assert buffer.read(2) == b"sp"
    assert buffer.read(2) == b"am"
    buffer.add(b"eggs")
    assert buffer.read() == b"eggs"
    with pytest.raises(BufferUnderrun):
        buffer.read(1)
示例#2
0
def test_save_discard_restore():
    buffer = Buffer()
    buffer.add(b"spam")
    buffer.save()
    assert len(buffer) == 4
    buffer.discard()
    assert len(buffer) == 0
    buffer.restore()
    assert len(buffer) == 4
示例#3
0
def test_unpack_chat():
    buffer = Buffer()
    buffer.add(b'\x11["spam", " eggs"]')
    assert buffer.unpack_chat().to_string() == "spam eggs"
    buffer.add(b'\x22{"text": "spam", "extra": " eggs"}')
    assert buffer.unpack_chat().to_string() == "spam eggs"
    buffer.add(b'\x14{"translate": "foo"}')
    assert buffer.unpack_chat().to_string() == "foo"
    buffer.add(b'\x2E{"translate": "foo", "with": ["spam", "eggs"]}')
    assert buffer.unpack_chat().to_string() == "foo{spam, eggs}"
示例#4
0
文件: nbt.py 项目: barneygale/mncrft
    def load_chunk(self, chunk_x, chunk_z):
        """
        Loads the chunk at the given co-ordinates from the region file.
        The co-ordinates should range from 0 to 31. Returns a ``TagRoot``.
        """

        buff = Buffer()

        # Read extent header
        self.fd.seek(4 * (32 * chunk_z + chunk_x))
        buff.add(self.fd.read(4))
        entry = buff.unpack('I')
        chunk_offset, chunk_length = entry >> 8, entry & 0xFF
        if chunk_offset == 0:
            raise ValueError((chunk_x, chunk_z))

        # Read chunk
        self.fd.seek(4096 * chunk_offset)
        buff.add(self.fd.read(4096 * chunk_length))
        chunk = buff.read(buff.unpack('IB')[0])
        chunk = zlib.decompress(chunk)
        chunk = TagRoot.from_bytes(chunk)
        return chunk
示例#5
0
def test_unpack_entity_metadata():
    buffer = Buffer()
    for value, data in entity_metadata_vectors:
        buffer.add(data)
        assert buffer.unpack_entity_metadata() == value
        assert len(buffer) == 0
示例#6
0
def test_unpack_slot():
    buffer = Buffer()
    for value, data in slot_vectors:
        buffer.add(data)
        assert buffer.unpack_slot() == value
        assert len(buffer) == 0
示例#7
0
def test_unpack_uuid():
    buffer = Buffer()
    buffer.add(uuid_vector)
    assert buffer.unpack_uuid().to_bytes() == uuid_vector
示例#8
0
def test_unpack_json():
    buffer = Buffer()
    buffer.add(b'\x10{"spam": "eggs"}')
    assert buffer.unpack_json() == {"spam": "eggs"}
示例#9
0
def test_unpack_string():
    buffer = Buffer()
    buffer.add(b"\x04spam")
    assert buffer.unpack_string() == "spam"
示例#10
0
def test_unpack():
    buffer = Buffer()
    for fmt, data, values in pack_unpack_vectors:
        buffer.add(data)
        assert buffer.unpack(fmt) == values
示例#11
0
def test_add():
    buffer = Buffer()
    buffer.add(b"spam")
    assert len(buffer) == 4
    assert buffer.read() == b"spam"