use tokio::io::DuplexStream;
use crate::base::SessionPath;
pub const DUPLEX_BUF: usize = 64 * 1024;
#[must_use]
pub fn duplex() -> (DuplexStream, DuplexStream) {
tokio::io::duplex(DUPLEX_BUF)
}
#[must_use]
pub fn sample_session_path() -> SessionPath {
SessionPath::new("aaron", "workstation", "razel")
}
#[cfg(test)]
mod self_tests {
#![allow(clippy::unwrap_used)]
use super::*;
use pretty_assertions::assert_eq;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::test]
async fn duplex_round_trips_bytes() {
let (mut a, mut b) = duplex();
a.write_all(b"ping").await.unwrap();
let mut buf = [0_u8; 4];
b.read_exact(&mut buf).await.unwrap();
assert_eq!(&buf, b"ping");
}
#[test]
fn sample_session_path_is_the_canonical_triple() {
assert_eq!(sample_session_path().to_string(), "aaron/workstation/razel");
}
}