use crate::packets::decoder::Decoder;
use super::prelude::*;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateBuddyPacket {
pub name: String,
}
impl Decodable for CreateBuddyPacket {
const KIND: PacketKind = PacketKind::CreateBuddy;
fn decode(mut bytes: &mut &[u8]) -> Result<Self, DecodableError> {
Ok(Self {
name: bytes.get_string()?,
})
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn should_decode_create_buddy() {
let mut payload: &[u8] = &[4, 0, b'J', b'o', b'h', b'n'];
let packet = CreateBuddyPacket::decode(&mut payload)
.expect("CreateBuddy packets should decode a player name");
assert_eq!(packet.name, "John");
assert!(
payload.is_empty(),
"CreateBuddy decoding should consume the whole payload"
);
}
#[test]
fn should_expose_create_buddy_kind_constant() {
assert_eq!(
CreateBuddyPacket::KIND,
PacketKind::CreateBuddy,
"CreateBuddy packets should advertise the correct packet kind"
);
}
}