summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <neikos@neikos.email>2022-06-25 20:19:19 +0200
committerMarcel Müller <neikos@neikos.email>2022-06-25 20:19:19 +0200
commit5be201272f1dfa7adde2172d95849c6ca70aebab (patch)
tree6770fd0dca206d6e0d3ea0af9a991b3f088651a0
parent59188a2fc7767bb7bb334cc179e0a1b885a469e6 (diff)
Make tests pass correctly
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r--mqtt-format/src/v3/header.rs6
-rw-r--r--mqtt-format/src/v3/identifier.rs2
-rw-r--r--mqtt-format/src/v3/packet.rs38
-rw-r--r--mqtt-format/src/v3/strings.rs2
-rw-r--r--mqtt-format/src/v3/subscription_acks.rs17
-rw-r--r--mqtt-format/src/v3/subscription_request.rs2
-rw-r--r--mqtt-format/src/v3/will.rs6
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,
}