use array_linked_list::ArrayLinkedList;
fn get_default_array() -> ArrayLinkedList<u8> {
let mut array = ArrayLinkedList::new();
array.push_front(1);
array.push_back(2);
array.push_front(3);
array.push_back(4);
array.push_back(5);
array
}
#[test]
fn test_values() {
let array = get_default_array();
let vec: Vec<_> = array.iter().copied().collect();
assert_eq!(vec, vec![3, 1, 2, 4, 5]);
}
#[test]
fn test_values_after() {
let array = get_default_array();
let vec: Vec<_> = array.iter_after(1).copied().collect();
assert_eq!(vec, vec![4, 5]);
}
#[test]
fn test_values_before() {
let array = get_default_array();
let vec: Vec<_> = array.iter_before(1).copied().collect();
assert_eq!(vec, vec![3, 1]);
}
#[test]
fn test_into_values() {
let array = get_default_array();
let vec: Vec<_> = array.into_iter().collect();
assert_eq!(vec, vec![3, 1, 2, 4, 5]);
}
#[test]
fn test_indexed() {
let array = get_default_array();
let vec: Vec<_> = array.indexed().collect();
assert_eq!(vec, vec![(2, &3), (0, &1), (1, &2), (3, &4), (4, &5)]);
}
#[test]
fn test_indexed_after() {
let array = get_default_array();
let vec: Vec<_> = array.indexed_after(1).collect();
assert_eq!(vec, vec![(3, &4), (4, &5)]);
}
#[test]
fn test_indexed_before() {
let array = get_default_array();
let vec: Vec<_> = array.indexed_before(1).collect();
assert_eq!(vec, vec![(2, &3), (0, &1)]);
}
#[test]
fn test_into_indexed() {
let array = get_default_array();
let vec: Vec<_> = array.into_indexed().collect();
assert_eq!(vec, vec![(2, 3), (0, 1), (1, 2), (3, 4), (4, 5)]);
}
#[test]
fn test_indices() {
let array = get_default_array();
let vec: Vec<_> = array.indices().collect();
assert_eq!(vec, vec![2, 0, 1, 3, 4]);
}
#[test]
fn test_indices_after() {
let array = get_default_array();
let vec: Vec<_> = array.indices_after(1).collect();
assert_eq!(vec, vec![3, 4]);
}
#[test]
fn test_indices_before() {
let array = get_default_array();
let vec: Vec<_> = array.indices_before(1).collect();
assert_eq!(vec, vec![2, 0]);
}
#[test]
fn test_into_indices() {
let array = get_default_array();
let vec: Vec<_> = array.into_indices().collect();
assert_eq!(vec, vec![2, 0, 1, 3, 4]);
}
#[test]
fn test_values_mut() {
let mut array = get_default_array();
for value in array.iter_mut() {
*value *= 10;
}
let vec: Vec<_> = array.iter().copied().collect();
assert_eq!(vec, vec![30, 10, 20, 40, 50]);
}
#[test]
fn test_values_mut_rev() {
let mut array = get_default_array();
let vec: Vec<_> = array.iter_mut().rev().map(|value| *value).collect();
assert_eq!(vec, vec![5, 4, 2, 1, 3]);
}
#[test]
fn test_indexed_mut() {
let mut array = get_default_array();
for (index, value) in array.indexed_mut() {
*value = index as u8;
}
let vec: Vec<_> = array
.indexed()
.map(|(index, value)| (index, *value))
.collect();
assert_eq!(vec, vec![(2, 2), (0, 0), (1, 1), (3, 3), (4, 4)]);
}
#[test]
fn test_values_mut_after_before() {
let mut array = get_default_array();
for value in array.iter_mut_after(1) {
*value += 100;
}
for value in array.iter_mut_before(1) {
*value += 200;
}
let vec: Vec<_> = array.iter().copied().collect();
assert_eq!(vec, vec![203, 201, 2, 104, 105]);
}
#[test]
fn test_from_iter_and_extend() {
let mut array: ArrayLinkedList<u8> = (1..=3).collect();
array.extend(4..=5);
let vec: Vec<_> = array.iter().copied().collect();
assert_eq!(vec, vec![1, 2, 3, 4, 5]);
assert_eq!(array.len(), 5);
}