crabka-protocol 0.3.1

Apache Kafka wire-protocol codec (4.3.0), with typed RecordBatch and zero-copy borrowed decode
Documentation
// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
// Clippy lints that fire on generated code patterns are suppressed here so
// that regenerating the file does not require manual allow annotations.
#![allow(
    clippy::absurd_extreme_comparisons,
    clippy::cast_possible_truncation,
    clippy::cast_possible_wrap,
    clippy::cast_sign_loss,
    clippy::default_trait_access,
    clippy::must_use_candidate,
    clippy::new_without_default,
    clippy::nonminimal_bool,
    clippy::too_many_lines,
    clippy::unnecessary_wraps,
    clippy::unreadable_literal,
    unused_mut,
    unused_variables
)]

include!(concat!(
    env!("CARGO_MANIFEST_DIR"),
    "/generated/UserScramCredentialRecord.borrowed.rs"
));

#[cfg(test)]
mod tests {
    use super::*;
    use crate::{DecodeBorrow, Encode};
    use assert2::assert;
    use bytes::BytesMut;

    fn check(msg_bytes: &bytes::Bytes, v: i16) {
        let mut cur: &[u8] = msg_bytes;
        let decoded = UserScramCredentialRecord::decode_borrow(&mut cur, v).unwrap();
        assert!(cur.is_empty());
        assert!(decoded.encoded_len(v) == msg_bytes.len());
        let mut reencoded = BytesMut::new();
        decoded.encode(&mut reencoded, v).unwrap();
        assert!(&reencoded[..] == &msg_bytes[..]);
        // Exercise the zero-copy -> owned conversion, then confirm the owned
        // value still encodes to the same bytes.
        let owned = decoded.to_owned();
        let mut owned_buf = BytesMut::new();
        owned.encode(&mut owned_buf, v).unwrap();
        assert!(&owned_buf[..] == &msg_bytes[..]);
    }

    #[test]
    fn default_roundtrips_all_versions() {
        for v in MIN_VERSION..=MAX_VERSION {
            let msg = UserScramCredentialRecord::default();
            let mut buf = BytesMut::new();
            msg.encode(&mut buf, v).unwrap();
            check(&buf.freeze(), v);
        }
    }

    #[test]
    fn populated_roundtrips_all_versions() {
        for v in MIN_VERSION..=MAX_VERSION {
            let msg = UserScramCredentialRecord::populated(v);
            let mut buf = BytesMut::new();
            msg.encode(&mut buf, v).unwrap();
            check(&buf.freeze(), v);
        }
    }
}