#![cfg(feature = "alloc")] use combo_vec::{combo_vec, ComboVec}; const DEFAULT_TEST_REARR: ComboVec = combo_vec![1, 2, 3]; const EMPTY_STRING_ALLOC: ComboVec = combo_vec![]; #[test] fn copy_string_combo_vec() { let mut x = EMPTY_STRING_ALLOC; x.push(String::from("hello")); x.push(String::from("world")); assert_eq!(x.join(" "), "hello world"); } #[test] fn make_new() { let mut cv = DEFAULT_TEST_REARR; cv.push(4); cv.push(5); println!("{cv}"); dbg!(&cv); assert_eq!(cv.get(0), Some(&1)); assert_eq!(cv.get(1), Some(&2)); assert_eq!(cv.get(2), Some(&3)); assert_eq!(cv.get(3), Some(&4)); assert_eq!(cv.last(), Some(&5)); assert_eq!(cv.get(4), Some(&5)); assert_eq!(cv.get(5), None); assert_eq!(cv.get_mut(0), Some(&mut 1)); } #[test] fn iter() { let mut cv = DEFAULT_TEST_REARR; cv.push(4); assert_eq!(cv.iter().collect::>(), vec![&1, &2, &3, &4]); assert_eq!(cv.into_iter().collect::>(), vec![1, 2, 3, 4]); } #[test] fn lengths() { let mut cv = DEFAULT_TEST_REARR; cv.push(4); assert_eq!(cv.len(), 4); assert_eq!(cv.stack_len(), 3); assert_eq!(cv.heap_len(), 1); } #[test] fn extend() { let mut cv = DEFAULT_TEST_REARR; cv.extend(vec![4, 5, 6]); cv.extend(DEFAULT_TEST_REARR); dbg!(&cv); assert_eq!(cv.len(), 9); assert_eq!(cv.stack_len(), 3); assert_eq!(cv.heap_len(), 6); assert_eq!(cv.to_vec(), vec![1, 2, 3, 4, 5, 6, 1, 2, 3]); } #[test] fn truncate_into_stack_push() { let mut cv = DEFAULT_TEST_REARR; cv.truncate(2); cv.push(3); assert_eq!(cv.len(), 3); assert_eq!(cv.stack_len(), 3); assert_eq!(cv.heap_len(), 0); assert_eq!(cv.to_vec(), vec![1, 2, 3]); } #[test] fn truncate_into_stack() { let mut cv = DEFAULT_TEST_REARR; cv.truncate(2); assert_eq!(cv.len(), 2); assert_eq!(cv.stack_len(), 2); assert_eq!(cv.heap_len(), 0); assert_eq!(cv.to_vec(), vec![1, 2]); } #[test] fn truncate_into_heap() { let mut cv = DEFAULT_TEST_REARR; cv.extend(vec![4, 5, 6]); cv.truncate(4); assert_eq!(cv.len(), 4); assert_eq!(cv.stack_len(), 3); assert_eq!(cv.heap_len(), 1); assert_eq!(cv.to_vec(), vec![1, 2, 3, 4]); } #[test] fn truncate_invalids() { let mut cv = DEFAULT_TEST_REARR; cv.truncate(4); cv.truncate(3); assert_eq!(cv.len(), 3); assert_eq!(cv.stack_len(), 3); assert_eq!(cv.heap_len(), 0); assert_eq!(cv.to_vec(), vec![1, 2, 3]); } #[test] fn exarr_macro() { let item1 = combo_vec![1, 2, 3]; println!("{item1}"); assert_eq!(item1.len(), 3); let item2 = combo_vec![5; 3]; println!("{item2}"); assert_eq!(item2.len(), 3); }