use super::Rb; #[cfg(feature = "alloc")] use crate::storage::Heap; use crate::traits::*; #[cfg(feature = "alloc")] use alloc::{boxed::Box, vec::Vec}; #[test] fn from_array() { let mut rb = Rb::from([123, 321]); let (mut prod, mut cons) = rb.split_ref(); assert_eq!(prod.capacity().get(), 2); assert_eq!(cons.occupied_len(), 2); assert_eq!(prod.try_push(444), Err(444)); assert_eq!(cons.try_pop(), Some(123)); assert_eq!(cons.try_pop(), Some(321)); assert_eq!(cons.try_pop(), None); } #[cfg(feature = "alloc")] #[test] fn new() { const CAP: usize = 2; let rb = Rb::>::new(CAP); let (mut prod, mut cons) = rb.split(); assert_eq!(prod.capacity().get(), CAP); assert_eq!(prod.try_push(0), Ok(())); assert_eq!(prod.try_push(1), Ok(())); assert_eq!(prod.try_push(2), Err(2)); assert_eq!(cons.try_pop(), Some(0)); assert_eq!(cons.try_pop(), Some(1)); assert_eq!(cons.try_pop(), None); } #[cfg(feature = "alloc")] #[test] fn from_vec() { let mut vec = Vec::::with_capacity(2); vec.push(123); let rb = Rb::from(vec); let (mut prod, mut cons) = rb.split(); assert_eq!(prod.capacity().get(), 2); assert_eq!(cons.occupied_len(), 1); assert_eq!(prod.try_push(321), Ok(())); assert_eq!(prod.try_push(444), Err(444)); assert_eq!(cons.try_pop(), Some(123)); assert_eq!(cons.try_pop(), Some(321)); assert_eq!(cons.try_pop(), None); } #[cfg(feature = "alloc")] #[test] fn from_boxed_slice() { let boxed_slice = Box::new([123, 321]) as Box<[i32]>; let rb = Rb::from(boxed_slice); let (mut prod, mut cons) = rb.split(); assert_eq!(prod.capacity().get(), 2); assert_eq!(cons.occupied_len(), 2); assert_eq!(prod.try_push(444), Err(444)); assert_eq!(cons.try_pop(), Some(123)); assert_eq!(cons.try_pop(), Some(321)); assert_eq!(cons.try_pop(), None); }