mqute_codec/protocol/v4/
pubcomp.rs1use super::util;
8use crate::protocol::{PacketType, traits};
9
10util::id_packet!(PubComp);
12
13util::id_packet_decode_impl!(PubComp, PacketType::PubComp);
15
16util::id_packet_encode_impl!(PubComp, PacketType::PubComp);
18
19impl traits::PubComp for PubComp {}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24 use crate::codec::PacketCodec;
25 use crate::codec::{Decode, Encode};
26 use bytes::BytesMut;
27 use tokio_util::codec::Decoder;
28
29 #[test]
30 fn pubrel_decode() {
31 let mut codec = PacketCodec::new(None, None);
32
33 let data = &[
34 (PacketType::PubComp as u8) << 4, 0x02, 0x12, 0x34,
38 ];
39
40 let mut stream = BytesMut::new();
41
42 stream.extend_from_slice(&data[..]);
43
44 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
45 let packet = PubComp::decode(raw_packet).unwrap();
46
47 assert_eq!(packet, PubComp::new(0x1234));
48 }
49
50 #[test]
51 fn pubrel_encode() {
52 let packet = PubComp::new(0x1234);
53
54 let mut stream = BytesMut::new();
55 packet.encode(&mut stream).unwrap();
56 assert_eq!(
57 stream,
58 vec![(PacketType::PubComp as u8) << 4, 0x02, 0x12, 0x34]
59 );
60 }
61}