use basalt_mc_protocol::packets::play::ServerboundPlayPacket;
#[derive(Debug, Clone)]
pub struct RawPacketEvent {
pub packet: ServerboundPlayPacket,
pub cancelled: bool,
}
crate::instant_cancellable_event!(RawPacketEvent);
#[cfg(test)]
mod tests {
use crate::events::Event;
use basalt_mc_protocol::packets::play::ServerboundPlayPacket;
use basalt_mc_protocol::packets::play::misc::ServerboundPlayKeepAlive;
use super::*;
#[test]
fn raw_packet_event_cancellation() {
let mut event = RawPacketEvent {
packet: ServerboundPlayPacket::KeepAlive(ServerboundPlayKeepAlive {
keep_alive_id: 42,
}),
cancelled: false,
};
assert!(!event.is_cancelled());
event.cancel();
assert!(event.is_cancelled());
}
#[test]
fn raw_packet_event_routes_to_instant_bus() {
use crate::events::{BusKind, EventRouting};
assert_eq!(RawPacketEvent::BUS, BusKind::Instant);
}
#[test]
fn raw_packet_event_downcast_roundtrip() {
let mut event = RawPacketEvent {
packet: ServerboundPlayPacket::KeepAlive(ServerboundPlayKeepAlive { keep_alive_id: 7 }),
cancelled: false,
};
let any = event.as_any_mut();
let concrete = any.downcast_mut::<RawPacketEvent>().unwrap();
assert!(matches!(
&concrete.packet,
ServerboundPlayPacket::KeepAlive(ka) if ka.keep_alive_id == 7
));
}
}