use tari_mmr::{ArrayLike, ArrayLikeExt, MemBackendVec};
#[test]
fn len_push_get_truncate_for_each_shift_clear() {
let mut db_vec = MemBackendVec::<i32>::new();
let mut mem_vec = vec![100, 200, 300, 400, 500, 600];
assert_eq!(db_vec.len().unwrap(), 0);
mem_vec.iter().for_each(|val| assert!(db_vec.push(*val).is_ok()));
assert_eq!(db_vec.len().unwrap(), mem_vec.len());
mem_vec
.iter()
.enumerate()
.for_each(|(i, val)| assert_eq!(db_vec.get(i).unwrap(), Some(*val)));
assert_eq!(db_vec.get(mem_vec.len()).unwrap(), None);
mem_vec.truncate(4);
assert!(db_vec.truncate(4).is_ok());
assert_eq!(db_vec.len().unwrap(), mem_vec.len());
db_vec.for_each(|val| assert!(mem_vec.contains(&val.unwrap()))).unwrap();
assert!(mem_vec.shift(2).is_ok());
assert!(db_vec.shift(2).is_ok());
assert_eq!(db_vec.len().unwrap(), 2);
assert_eq!(db_vec.get(0).unwrap(), Some(300));
assert_eq!(db_vec.get(1).unwrap(), Some(400));
assert!(db_vec.clear().is_ok());
assert_eq!(db_vec.len().unwrap(), 0);
}