use tokio_tungstenite::tungstenite::Message;
#[allow(dead_code)]
pub(crate) fn is_server_ping(msg: &Message) -> bool {
matches!(msg, Message::Ping(_))
}
#[allow(dead_code)]
pub(crate) fn pong_for(msg: &Message) -> Option<Message> {
if let Message::Ping(data) = msg {
Some(Message::Pong(data.clone()))
} else {
None
}
}
#[cfg(test)]
mod tests {
use super::*;
use tokio_tungstenite::tungstenite::Message;
#[test]
fn is_server_ping_returns_true_for_ping() {
let ping = Message::Ping(vec![1, 2, 3]);
assert!(is_server_ping(&ping));
}
#[test]
fn is_server_ping_returns_false_for_text() {
let text = Message::Text("hello".to_string());
assert!(!is_server_ping(&text));
}
#[test]
fn pong_for_returns_pong_with_same_data() {
let ping = Message::Ping(vec![42, 99]);
let pong = pong_for(&ping);
assert_eq!(pong, Some(Message::Pong(vec![42, 99])));
}
#[test]
fn pong_for_returns_none_for_non_ping() {
let text = Message::Text("not a ping".to_string());
assert_eq!(pong_for(&text), None);
}
}