use lowlet::channel;
use std::time::Duration;
#[test]
fn test_batch_send_recv() {
let (tx, rx) = channel::<u64, 128>();
let data = [1u64, 2, 3, 4, 5];
let sent = tx.send_batch(&data).unwrap();
assert_eq!(sent, 5);
let mut buf = [0u64; 10];
let received = rx.recv_batch(&mut buf, 5);
assert_eq!(received, 5);
assert_eq!(&buf[0..5], &data);
}
#[test]
fn test_send_timeout() {
let (tx, _rx) = channel::<u64, 4>();
for i in 0..4 {
tx.send(i).unwrap();
}
let result = tx.send_timeout(100, Duration::from_millis(10));
assert!(result.is_err());
}
#[test]
fn test_recv_timeout() {
let (_tx, rx) = channel::<u64, 64>();
let result = rx.recv_timeout(Duration::from_millis(10));
assert!(result.is_err());
}
#[test]
fn test_batch_partial_send() {
let (tx, _rx) = channel::<u64, 4>();
let data = [1u64, 2, 3, 4, 5, 6, 7, 8];
let sent = tx.send_batch(&data).unwrap();
assert_eq!(sent, 4);
}