use super::*;
#[test]
#[should_panic(expected = "broadcast channel version counter overflowed")]
fn send_panics_on_version_overflow() {
let (tx, _) = unbounded();
tx.shared.inner.lock().tail = u64::MAX;
tx.send(());
}
#[test]
fn one_off_burst_allocation_is_returned_once_it_is_behind_us() {
let (tx, mut rx) = unbounded();
let burst = MIN_RETAINED_CAPACITY * 16;
for i in 0..burst {
tx.send(i);
}
assert!(tx.shared.inner.lock().buffer.capacity() >= burst);
for i in 0..burst {
assert_eq!(rx.try_recv(), Ok(i));
}
assert_eq!(tx.retained_message_count(), 0);
assert!(tx.shared.inner.lock().buffer.capacity() >= burst);
tx.send(0);
assert_eq!(rx.try_recv(), Ok(0));
assert!(tx.shared.inner.lock().buffer.capacity() < burst);
}
#[test]
fn repeated_bursts_keep_their_allocation() {
let (tx, mut rx) = unbounded();
let burst = MIN_RETAINED_CAPACITY * 4;
for _ in 0..4 {
for i in 0..burst {
tx.send(i);
}
for i in 0..burst {
assert_eq!(rx.try_recv(), Ok(i));
}
}
assert!(tx.shared.inner.lock().buffer.capacity() >= burst);
}