lowlet 0.1.2

Low-latency IPC library using shared memory and lock-free structures
Documentation
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);
}