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