108 lines
2.7 KiB
Rust
108 lines
2.7 KiB
Rust
#[macro_use]
|
|
extern crate minecraft_protocol_derive;
|
|
|
|
use minecraft_protocol::decoder::Decoder;
|
|
use minecraft_protocol::encoder::Encoder;
|
|
use minecraft_protocol::error::{DecodeError, EncodeError};
|
|
|
|
#[derive(Packet)]
|
|
pub struct HalfLong {
|
|
#[packet(bitfield(size = 32))]
|
|
pub _unused: u32,
|
|
#[packet(bitfield(size = 32))]
|
|
pub value: u32,
|
|
}
|
|
|
|
#[derive(Packet)]
|
|
pub struct HalfInt {
|
|
#[packet(bitfield(size = 16))]
|
|
pub _unused: u16,
|
|
#[packet(bitfield(size = 16))]
|
|
pub value: u16,
|
|
}
|
|
|
|
#[derive(Packet)]
|
|
pub struct HalfShort {
|
|
#[packet(bitfield(size = 8))]
|
|
pub _unused: u8,
|
|
#[packet(bitfield(size = 8))]
|
|
pub value: u8,
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::{HalfInt, HalfLong, HalfShort};
|
|
use minecraft_protocol::decoder::Decoder;
|
|
use minecraft_protocol::encoder::Encoder;
|
|
use minecraft_protocol::error::{DecodeError, EncodeError};
|
|
use std::io::Cursor;
|
|
|
|
#[test]
|
|
fn test_encode_half_long_u64_bitfield() {
|
|
let half = HalfLong {
|
|
_unused: 0,
|
|
value: u32::MAX,
|
|
};
|
|
let mut vec = Vec::new();
|
|
|
|
half.encode(&mut vec).expect("Failed to encode half");
|
|
assert_eq!(vec, u32::MAX.to_be_bytes().to_vec());
|
|
}
|
|
|
|
#[test]
|
|
fn test_decode_half_long_u64_bitfield() {
|
|
let value = u32::MAX as u64;
|
|
|
|
let vec = value.to_be_bytes().to_vec();
|
|
let mut cursor = Cursor::new(vec);
|
|
|
|
let half = HalfLong::decode(&mut cursor).expect("Failed to decode half");
|
|
assert_eq!(half.value, u32::MAX);
|
|
}
|
|
|
|
#[test]
|
|
fn test_encode_half_int_u32_bitfield() {
|
|
let half = HalfInt {
|
|
_unused: 0,
|
|
value: u16::MAX,
|
|
};
|
|
let mut vec = Vec::new();
|
|
|
|
half.encode(&mut vec).expect("Failed to encode half");
|
|
assert_eq!(vec, u16::MAX.to_be_bytes().to_vec());
|
|
}
|
|
|
|
#[test]
|
|
fn test_decode_half_int_u32_bitfield() {
|
|
let value = u16::MAX as u32;
|
|
|
|
let vec = value.to_be_bytes().to_vec();
|
|
let mut cursor = Cursor::new(vec);
|
|
|
|
let half = HalfInt::decode(&mut cursor).expect("Failed to decode half");
|
|
assert_eq!(half.value, u16::MAX);
|
|
}
|
|
|
|
#[test]
|
|
fn test_encode_half_short_u8_bitfield() {
|
|
let half = HalfShort {
|
|
_unused: 0,
|
|
value: u8::MAX,
|
|
};
|
|
let mut vec = Vec::new();
|
|
|
|
half.encode(&mut vec).expect("Failed to encode half");
|
|
assert_eq!(vec, u8::MAX.to_be_bytes().to_vec());
|
|
}
|
|
|
|
#[test]
|
|
fn test_decode_half_short_u8_bitfield() {
|
|
let value = u8::MAX as u16;
|
|
let vec = value.to_be_bytes().to_vec();
|
|
let mut cursor = Cursor::new(vec);
|
|
|
|
let half = HalfShort::decode(&mut cursor).expect("Failed to decode half");
|
|
assert_eq!(half.value, u8::MAX);
|
|
}
|
|
}
|