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
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
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
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
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
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
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() == ""