コード例 #1
0
ファイル: test_buffer.py プロジェクト: sunarch/PyMine
def test_varint(var_int, error_msg):
    buf = Buffer()
    if error_msg:
        with pytest.raises(ValueError) as err:

            buf.write(Buffer.pack_varint(var_int))
            assert error_msg in str(err)
    else:
        buf.write(Buffer.pack_varint(var_int))
        assert buf.unpack_varint() == var_int
コード例 #2
0
ファイル: test_buffer.py プロジェクト: sunarch/PyMine
def test_json():
    buf = Buffer()

    with open(os.path.join("tests", "sample_data", "test.json")) as test_file:
        data = json.load(test_file)
        buf.write(Buffer.pack_json(data))

    for key, value in buf.unpack_json().items():
        assert key in data
        assert data[key] == value
コード例 #3
0
def test_varint():
    buf = Buffer()

    buf.write(Buffer.pack_varint(0))
    buf.write(Buffer.pack_varint(1))
    buf.write(Buffer.pack_varint(3749146))

    assert buf.unpack_varint() == 0
    assert buf.unpack_varint() == 1
    assert buf.unpack_varint() == 3749146
コード例 #4
0
ファイル: test_buffer.py プロジェクト: sunarch/PyMine
def test_basic():
    buf = Buffer()

    buf.write(
        Buffer.pack("i", 123) + Buffer.pack("b", 1) + Buffer.pack("?", True) +
        Buffer.pack("q", 1234567890456))
    assert buf.buf == b"\x00\x00\x00{\x01\x01\x00\x00\x01\x1fq\xfb\x06\x18"

    assert buf.unpack("i") == 123
    assert buf.unpack("b") == 1
    assert buf.unpack("?") is True
    assert buf.unpack("q") == 1234567890456
コード例 #5
0
    def encode(self) -> bytes:
        out = Buffer.pack("i", self.chunk.x) + Buffer.pack("i", self.chunk.z) + Buffer.pack("?", self.full)

        mask = 0
        chunk_sections_buffer = Buffer()

        for y, section in self.chunk.sections.items():  # pack chunk columns into buffer and generate a bitmask
            if y >= 0:
                mask |= 1 << y
                chunk_sections_buffer.write(Buffer.pack_chunk_section(section))

        out += Buffer.pack_varint(mask) + Buffer.pack_nbt(
            nbt.TAG_Compound("", [self.chunk["Heightmaps"]["MOTION_BLOCKING"], self.chunk["Heightmaps"]["WORLD_SURFACE"]])
        )

        if self.full:
            out += Buffer.pack_varint(len(Chunk["Biomes"])) + b"".join([Buffer.pack_varint(n) for n in Chunk["Biomes"]])

        out += len(chunk_sections_buffer) + chunk_sections_buffer.read()

        # here we would pack the block entities, but we don't support them yet so we just send an array with length of 0
        out += Buffer.pack_varint(0)

        return out
コード例 #6
0
ファイル: test_buffer.py プロジェクト: sunarch/PyMine
def test_optional_varint():
    buf = Buffer()

    buf.write(Buffer.pack_optional_varint(1))
    buf.write(Buffer.pack_optional_varint(2))
    buf.write(Buffer.pack_optional_varint(None))
    buf.write(Buffer.pack_optional_varint(3))

    assert buf.unpack_optional_varint() == 1
    assert buf.unpack_optional_varint() == 2
    assert buf.unpack_optional_varint() is None
    assert buf.unpack_optional_varint() == 3
コード例 #7
0
ファイル: test_buffer.py プロジェクト: sunarch/PyMine
def test_string():
    buf = Buffer()

    buf.write(Buffer.pack_string(""))
    buf.write(Buffer.pack_string(""))
    buf.write(Buffer.pack_string("2"))
    buf.write(
        Buffer.pack_string(
            "adkfj;adkfa;ldkfj\x01af\t\n\n00;\xc3\x85\xc3\x84\xc3\x96"))
    buf.write(Buffer.pack_string(""))
    buf.write(Buffer.pack_string("BrUh"))
    buf.write(Buffer.pack_string(""))

    assert buf.unpack_string() == ""
    assert buf.unpack_string() == ""
    assert buf.unpack_string() == "2"
    assert buf.unpack_string(
    ) == "adkfj;adkfa;ldkfj\x01af\t\n\n00;\xc3\x85\xc3\x84\xc3\x96"
    assert buf.unpack_string() == ""
    assert buf.unpack_string() == "BrUh"
    assert buf.unpack_string() == ""