use crate::tests::{
attachment_abort_message, attachment_ack_message, attachment_chunk_message,
attachment_end_message, attachment_init_message, inline_file_message, text_message,
voice_message,
};
use crate::{decode_message, encode_message, peek_packet, HEADER_LEN};
#[test]
fn roundtrip_all_message_types() {
let messages = [
text_message(),
inline_file_message(),
voice_message(),
attachment_init_message(),
attachment_chunk_message(0),
attachment_end_message(),
attachment_abort_message(),
attachment_ack_message(),
];
for message in messages {
let encoded = encode_message(&message).unwrap();
let decoded = decode_message(&encoded).unwrap();
assert_eq!(decoded, message);
}
}
#[test]
fn frame_body_length_matches_payload() {
let message = text_message();
let encoded = encode_message(&message).unwrap();
let view = peek_packet(&encoded).unwrap();
assert_eq!(view.body_len as usize, encoded.len() - HEADER_LEN);
}
#[test]
fn encoding_is_deterministic() {
let message = attachment_chunk_message(1);
let first = encode_message(&message).unwrap();
let second = encode_message(&message).unwrap();
assert_eq!(first, second);
}