use slabigator::Slab;
#[test]
fn test_from_iterator() {
let input = vec![1, 2, 3, 4, 5];
let slab: Slab<_> = input.into_iter().collect();
assert_eq!(slab.len(), 5);
let expected = vec![1, 2, 3, 4, 5];
let output: Vec<_> = slab.iter().copied().collect();
assert_eq!(output, expected);
}
#[test]
fn test_extend_functionality() {
let mut slab = Slab::with_capacity(5).unwrap();
slab.push_front(1).unwrap();
slab.push_front(2).unwrap();
slab.extend(vec![3, 4, 5]);
assert_eq!(slab.len(), 5);
let items: Vec<_> = slab.iter().copied().collect();
assert_eq!(items, vec![5, 4, 3, 2, 1]);
}
#[test]
fn test_clear_operation() {
let mut slab = Slab::with_capacity(3).unwrap();
let _a = slab.push_front(4).unwrap();
let _b = slab.push_front(5).unwrap();
let _c = slab.push_front(6).unwrap();
assert_eq!(slab.len(), 3);
assert!(slab.is_full());
slab.clear();
assert_eq!(slab.len(), 0);
assert!(slab.is_empty());
assert!(!slab.is_full());
let x = slab.push_front(7).unwrap();
let y = slab.push_front(8).unwrap();
let z = slab.push_front(9).unwrap();
assert_eq!(slab.len(), 3);
assert!(slab.is_full());
assert_eq!(*slab.get(x).unwrap(), 7);
assert_eq!(*slab.get(y).unwrap(), 8);
assert_eq!(*slab.get(z).unwrap(), 9);
}