use crate::protocol::prelude::*;
#[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Debug, Default)]
pub struct ClientGreeting {
pub compatibility: u16,
pub debug: bool,
pub extension: u8,
}
impl ProtocolMessage for ClientGreeting {
const WIRE_ENCODING_LIMIT: u32 = 4_096;
}
#[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Debug, Default)]
pub struct ServerGreeting {
pub compatibility: u16,
pub extension: u8,
}
impl ProtocolMessage for ServerGreeting {
const WIRE_ENCODING_LIMIT: u32 = 4_096;
}
#[cfg(test)]
#[cfg_attr(coverage_nightly, coverage(off))]
mod test {
use super::{ClientGreeting, ServerGreeting};
use crate::protocol::prelude::*;
use pretty_assertions::assert_eq;
#[test]
fn serialize_client_greeting() {
let msg = ClientGreeting {
compatibility: 1,
debug: false,
extension: 0,
};
let wire = msg.to_vec().unwrap();
let deser = ClientGreeting::from_slice(&wire).unwrap();
assert_eq!(msg, deser);
}
#[test]
fn serialize_server_greeting() {
let msg = ServerGreeting {
compatibility: 1,
extension: 0,
};
let wire = msg.to_vec().unwrap();
let deser = ServerGreeting::from_slice(&wire).unwrap();
assert_eq!(msg, deser);
}
#[test]
fn wire_marshalling_client_greeting() {
let msg = ClientGreeting {
compatibility: 1,
debug: true,
extension: 3,
};
let wire = msg.to_vec().unwrap();
let expected = b"\x01\x00\x01\x03".to_vec();
assert_eq!(wire, expected);
}
#[test]
fn wire_marshalling_server_greeting() {
let msg = ServerGreeting {
compatibility: 1,
extension: 4,
};
let wire = msg.to_vec().unwrap();
let expected = b"\x01\x00\x04".to_vec();
assert_eq!(wire, expected);
}
}