diff options
| author | mat <github@matdoes.dev> | 2021-12-07 21:48:37 +0000 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2021-12-07 21:48:37 +0000 |
| commit | 9c14b3f32346f071ad12faf86105f5fd3ce03959 (patch) | |
| tree | 003ae48d033ff0f335c81389a4772b17813121c1 /minecraft-protocol/src/mc_buf.rs | |
| parent | 500754eab0bb99e6bd1769ddd999241ce26b5f91 (diff) | |
| download | azalea-drasl-9c14b3f32346f071ad12faf86105f5fd3ce03959.tar.xz | |
polish before being ready for finishing packets
Diffstat (limited to 'minecraft-protocol/src/mc_buf.rs')
| -rw-r--r-- | minecraft-protocol/src/mc_buf.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/minecraft-protocol/src/mc_buf.rs b/minecraft-protocol/src/mc_buf.rs index f657626f..1e6e5b08 100644 --- a/minecraft-protocol/src/mc_buf.rs +++ b/minecraft-protocol/src/mc_buf.rs @@ -50,6 +50,9 @@ pub async fn read_varint<T: AsyncRead + std::marker::Unpin>( pub fn write_varint(buf: &mut Vec<u8>, mut value: u32) { let mut buffer = [0]; + if value == 0 { + buf.write(&buffer).unwrap(); + } while value != 0 { buffer[0] = (value & 0b0111_1111) as u8; value = (value >> 7) & (u32::max_value() >> 6); @@ -68,12 +71,22 @@ mod tests { let mut buf = Vec::new(); write_varint(&mut buf, 123456); assert_eq!(buf, vec![192, 196, 7]); + + let mut buf = Vec::new(); + write_varint(&mut buf, 0); + assert_eq!(buf, vec![0]); } #[tokio::test] async fn test_read_varint() { let mut buf = BufReader::new(Cursor::new(vec![192, 196, 7])); assert_eq!(read_varint(&mut buf).await.unwrap(), (123456, 3)); + + let mut buf = BufReader::new(Cursor::new(vec![0])); + assert_eq!(read_varint(&mut buf).await.unwrap(), (0, 1)); + + let mut buf = BufReader::new(Cursor::new(vec![1])); + assert_eq!(read_varint(&mut buf).await.unwrap(), (1, 1)); } #[tokio::test] |
