diff options
author | Marcel Müller <neikos@neikos.email> | 2022-06-25 20:19:19 +0200 |
---|---|---|
committer | Marcel Müller <neikos@neikos.email> | 2022-06-25 20:19:19 +0200 |
commit | 5be201272f1dfa7adde2172d95849c6ca70aebab (patch) | |
tree | 6770fd0dca206d6e0d3ea0af9a991b3f088651a0 | |
parent | 59188a2fc7767bb7bb334cc179e0a1b885a469e6 (diff) |
Make tests pass correctly
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r-- | mqtt-format/src/v3/header.rs | 6 | ||||
-rw-r--r-- | mqtt-format/src/v3/identifier.rs | 2 | ||||
-rw-r--r-- | mqtt-format/src/v3/packet.rs | 38 | ||||
-rw-r--r-- | mqtt-format/src/v3/strings.rs | 2 | ||||
-rw-r--r-- | mqtt-format/src/v3/subscription_acks.rs | 17 | ||||
-rw-r--r-- | mqtt-format/src/v3/subscription_request.rs | 2 | ||||
-rw-r--r-- | mqtt-format/src/v3/will.rs | 6 |
7 files changed, 38 insertions, 35 deletions
diff --git a/mqtt-format/src/v3/header.rs b/mqtt-format/src/v3/header.rs index 7986f7f..f1e0408 100644 --- a/mqtt-format/src/v3/header.rs +++ b/mqtt-format/src/v3/header.rs @@ -1,6 +1,6 @@ use nom::{ bits, - bytes::streaming::take_while_m_n, + bytes::complete::take_while_m_n, error::{Error, ErrorKind, FromExternalError}, sequence::tuple, IResult, Parser, @@ -54,8 +54,8 @@ pub enum MPacketKind { fn mpacketkind(input: &[u8]) -> IResult<&[u8], MPacketKind> { let (input, (upper, lower)): (_, (u8, u8)) = bits::<_, _, Error<(&[u8], usize)>, _, _>(tuple(( - nom::bits::streaming::take(4usize), - nom::bits::streaming::take(4usize), + nom::bits::complete::take(4usize), + nom::bits::complete::take(4usize), )))(input)?; let (input, kind) = match (upper, lower) { diff --git a/mqtt-format/src/v3/identifier.rs b/mqtt-format/src/v3/identifier.rs index 5ffbcfe..228b18e 100644 --- a/mqtt-format/src/v3/identifier.rs +++ b/mqtt-format/src/v3/identifier.rs @@ -1,4 +1,4 @@ -use nom::{number::streaming::be_u16, Parser}; +use nom::{number::complete::be_u16, Parser}; use super::MSResult; diff --git a/mqtt-format/src/v3/packet.rs b/mqtt-format/src/v3/packet.rs index 02f428d..166952f 100644 --- a/mqtt-format/src/v3/packet.rs +++ b/mqtt-format/src/v3/packet.rs @@ -1,6 +1,6 @@ use nom::{ - bits, bytes::streaming::take, error::FromExternalError, multi::many1, - number::streaming::be_u16, sequence::tuple, IResult, Parser, + bits, bytes::complete::take, error::FromExternalError, multi::many1, + number::complete::be_u16, sequence::tuple, IResult, Parser, }; use super::{ @@ -81,8 +81,8 @@ fn mpayload(input: &[u8]) -> IResult<&[u8], &[u8]> { fn mpacketdata(fixed_header: MPacketHeader, input: &[u8]) -> IResult<&[u8], MPacket> { let (input, (upper, lower)): (_, (u8, u8)) = bits::<_, _, nom::error::Error<(&[u8], usize)>, _, _>(tuple(( - nom::bits::streaming::take(4usize), - nom::bits::streaming::take(4usize), + nom::bits::complete::take(4usize), + nom::bits::complete::take(4usize), )))(input)?; let (input, info) = match (upper, lower) { @@ -97,7 +97,7 @@ fn mpacketdata(fixed_header: MPacketHeader, input: &[u8]) -> IResult<&[u8], MPac ))); } - let (input, protocol_level) = nom::number::streaming::u8(input)?; + let (input, protocol_level) = nom::number::complete::u8(input)?; if protocol_level != 4 { return Err(nom::Err::Error(nom::error::Error::from_external_error( @@ -118,15 +118,16 @@ fn mpacketdata(fixed_header: MPacketHeader, input: &[u8]) -> IResult<&[u8], MPac clean_session, reserved, ), - ) = bits(tuple(( - nom::bits::streaming::take(1usize), - nom::bits::streaming::take(1usize), - nom::bits::streaming::take(1usize), - nom::bits::streaming::take(2usize), - nom::bits::streaming::take(1usize), - nom::bits::streaming::take(1usize), - nom::bits::streaming::take(1usize), - )))(input)?; + ): (_, (u8, u8, u8, _, u8, u8, u8)) = + bits::<_, _, nom::error::Error<(&[u8], usize)>, _, _>(tuple(( + nom::bits::complete::take(1usize), + nom::bits::complete::take(1usize), + nom::bits::complete::take(1usize), + nom::bits::complete::take(2usize), + nom::bits::complete::take(1usize), + nom::bits::complete::take(1usize), + nom::bits::complete::take(1usize), + )))(input)?; if reserved != 0 { return Err(nom::Err::Error(nom::error::Error::from_external_error( @@ -191,10 +192,11 @@ fn mpacketdata(fixed_header: MPacketHeader, input: &[u8]) -> IResult<&[u8], MPac ) } (2, 0b0000) => { - let (input, (reserved, session_present)) = bits(tuple(( - nom::bits::streaming::take(7usize), - nom::bits::streaming::take(1usize), - )))(input)?; + let (input, (reserved, session_present)): (_, (u8, u8)) = + bits::<_, _, nom::error::Error<(&[u8], usize)>, _, _>(tuple(( + nom::bits::complete::take(7usize), + nom::bits::complete::take(1usize), + )))(input)?; if reserved != 0 { return Err(nom::Err::Error(nom::error::Error::from_external_error( diff --git a/mqtt-format/src/v3/strings.rs b/mqtt-format/src/v3/strings.rs index 76a7f18..83c75e9 100644 --- a/mqtt-format/src/v3/strings.rs +++ b/mqtt-format/src/v3/strings.rs @@ -1,4 +1,4 @@ -use nom::{bytes::streaming::take, number::streaming::be_u16, IResult, Parser}; +use nom::{bytes::complete::take, number::complete::be_u16, IResult, Parser}; use nom_supreme::ParserExt; /// A v3 MQTT string as defined in section 1.5.3 diff --git a/mqtt-format/src/v3/subscription_acks.rs b/mqtt-format/src/v3/subscription_acks.rs index 4ec0d1d..0937968 100644 --- a/mqtt-format/src/v3/subscription_acks.rs +++ b/mqtt-format/src/v3/subscription_acks.rs @@ -23,9 +23,9 @@ fn msubscriptionack(input: &[u8]) -> MSResult<'_, MSubscriptionAck> { input, match data { 0x00 => MSubscriptionAck::MaximumQualityAtMostOnce, - 0x01 => MSubscriptionAck::MaximumQualityAtMostOnce, - 0x02 => MSubscriptionAck::MaximumQualityAtMostOnce, - 0x80 => MSubscriptionAck::MaximumQualityAtMostOnce, + 0x01 => MSubscriptionAck::MaximumQualityAtLeastOnce, + 0x02 => MSubscriptionAck::MaximumQualityExactlyOnce, + 0x80 => MSubscriptionAck::Failure, invalid_ack => { return Err(nom::Err::Error(nom::error::Error::from_external_error( input, @@ -41,13 +41,14 @@ pub fn msubscriptionacks<'message>( input: &'message [u8], ) -> MSResult<'message, MSubscriptionAcks<'message>> { let acks = input; - let (input, _) = many1_count(msubscriptionack)(input)?; + let (input, acks_len) = many1_count(msubscriptionack)(input)?; + + assert!(acks_len <= acks.len()); let ack_ptr: *const MSubscriptionAck = acks.as_ptr() as *const MSubscriptionAck; - let acks_len = acks.len(); let acks: &'message [MSubscriptionAck] = unsafe { // SAFETY: The array has been checked and is of the correct len, as well as - // MSubscriptionAck is the same repr + // MSubscriptionAck is the same repr and has no padding std::slice::from_raw_parts(ack_ptr, acks_len) }; @@ -72,7 +73,7 @@ mod tests { &[ MSubscriptionAck::MaximumQualityAtLeastOnce, MSubscriptionAck::MaximumQualityExactlyOnce, - MSubscriptionAck::MaximumQualityAtLeastOnce, + MSubscriptionAck::MaximumQualityAtMostOnce, MSubscriptionAck::Failure, ] ) @@ -82,6 +83,6 @@ mod tests { fn check_invalid_subacks() { let input = &[0x1, 0x5]; - msubscriptionacks(input).unwrap_err(); + nom::combinator::all_consuming(msubscriptionacks)(input).unwrap_err(); } } diff --git a/mqtt-format/src/v3/subscription_request.rs b/mqtt-format/src/v3/subscription_request.rs index c10cde6..7d4f278 100644 --- a/mqtt-format/src/v3/subscription_request.rs +++ b/mqtt-format/src/v3/subscription_request.rs @@ -85,7 +85,7 @@ mod tests { 1, // QoS 1 0, 3, // Length 3 0x63, 0x2F, 0x64, // The string 'c/d' - 2, // QoS 1 + 2, // QoS 2 ]; let (rest, subs) = msubscriptionrequests(input).unwrap(); diff --git a/mqtt-format/src/v3/will.rs b/mqtt-format/src/v3/will.rs index d036d06..0f0db71 100644 --- a/mqtt-format/src/v3/will.rs +++ b/mqtt-format/src/v3/will.rs @@ -2,7 +2,7 @@ use super::{qos::MQualityOfService, strings::MString}; #[derive(Debug, Clone, Copy, PartialEq)] pub struct MLastWill<'message> { - topic: MString<'message>, - payload: &'message [u8], - qos: MQualityOfService, + pub topic: MString<'message>, + pub payload: &'message [u8], + pub qos: MQualityOfService, } |