#![cfg(feature = "alloc")]
#[test]
fn test_uninit() {
use crate::common_def;
use oneringbuf::{ORBIterator, SharedHeapRB};
use std::rc::Rc;
common_def!();
let buf = unsafe { SharedHeapRB::new_zeroed(BUFFER_SIZE) };
let (mut prod, mut cons) = buf.split();
let slice = (0..BUFFER_SIZE - 1)
.map(Rc::new)
.collect::<Vec<Rc<usize>>>();
for x in &slice {
prod.push_init(x.clone()).unwrap();
}
unsafe {
cons.advance(BUFFER_SIZE - 1);
}
for x in &slice {
prod.push_init(x.clone()).unwrap();
}
for _ in &slice {
unsafe {
cons.pop_move().unwrap();
}
}
for x in &slice {
prod.push_init(x.clone()).unwrap();
}
unsafe {
cons.advance(BUFFER_SIZE - 1);
}
prod.push_slice_clone_init(&slice).unwrap();
unsafe {
cons.advance(BUFFER_SIZE - 1);
}
prod.push_slice_clone(&slice).unwrap();
for _ in &slice {
unsafe {
cons.pop_move().unwrap();
}
}
drop(prod);
drop(cons);
}