use std::net::Ipv4Addr;
#[tokio::test]
async fn braided_tcp() {
use futures_util::StreamExt;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
let incoming = tokio::net::TcpListener::bind((Ipv4Addr::LOCALHOST, 0))
.await
.unwrap();
let addr = incoming.local_addr().unwrap();
let server = hyperdriver::server::conn::Acceptor::from(incoming);
tokio::spawn(async move {
let mut incoming = server.fuse();
while let Some(Ok(mut stream)) = incoming.next().await {
let mut buf = [0u8; 1024];
let n = stream.read(&mut buf).await.unwrap();
stream.write_all(&buf[..n]).await.unwrap();
}
});
let mut conn = hyperdriver::client::conn::Stream::connect(addr)
.await
.unwrap();
let mut buf = [0u8; 1024];
conn.write_all(b"hello world").await.unwrap();
let n = conn.read(&mut buf).await.unwrap();
assert_eq!(&buf[..n], b"hello world");
}