mqute_codec/protocol/v4/
unsuback.rs1use super::util;
8use crate::protocol::PacketType;
9
10util::id_packet!(UnsubAck);
12
13util::id_packet_decode_impl!(UnsubAck, PacketType::UnsubAck);
15
16util::id_packet_encode_impl!(UnsubAck, PacketType::UnsubAck);
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 unsuback_decode() {
29 let mut codec = PacketCodec::new(None, None);
30
31 let data = &[
32 (PacketType::UnsubAck 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 = UnsubAck::decode(raw_packet).unwrap();
44
45 assert_eq!(packet, UnsubAck::new(0x1234));
46 }
47
48 #[test]
49 fn unsuback_encode() {
50 let packet = UnsubAck::new(0x1234);
51
52 let mut stream = BytesMut::new();
53 packet.encode(&mut stream).unwrap();
54 assert_eq!(
55 stream,
56 vec![(PacketType::UnsubAck as u8) << 4, 0x02, 0x12, 0x34]
57 );
58 }
59}