Skip to content

Commit

Permalink
test avltree thoroughly
Browse files Browse the repository at this point in the history
  • Loading branch information
rnbguy committed May 2, 2024
1 parent bc16a59 commit c8cfa04
Showing 1 changed file with 27 additions and 17 deletions.
44 changes: 27 additions & 17 deletions basecoin/store/src/avl/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,42 +38,52 @@ fn get() {
}

#[test]
fn shuffle_get() {
fn test_shuffle_insert_get_remove() {
let mut tree = AvlTree::new();
let mut std_tree = std::collections::BTreeMap::new();

let mut keys: Vec<u8> = (0..=255).collect();

keys.shuffle(&mut thread_rng());
for &i in keys.iter() {
tree.insert([i], vec![i]);
assert!(tree.root.as_ref().unwrap().balance_factor().abs() <= 1);
}

keys.shuffle(&mut thread_rng());
for &i in keys.iter() {
assert_eq!(tree.get(&[i]), Some(&vec![i]));
}
}
std_tree.insert([i], vec![i]);

#[test]
fn shuffle_remove() {
let mut tree = AvlTree::new();
// keys from BTreeMap must be present in AvlTree.
for key in std_tree.keys() {
assert_eq!(tree.get(key), std_tree.get(key));
}

let mut keys: Vec<u8> = (0..=255).collect();
// keys from AvlTree must be present in BTreeMap.
for key in tree.get_keys() {
assert_eq!(tree.get(key), std_tree.get(key));
}

keys.shuffle(&mut thread_rng());
for &i in keys.iter() {
tree.insert([i], vec![i]);
// AvlTree must stay balanced.
assert!(tree.root.as_ref().unwrap().balance_factor().abs() <= 1);
}

keys.shuffle(&mut thread_rng());
for &i in keys.iter() {
// keys from BTreeMap must be present in AvlTree.
for key in std_tree.keys() {
assert_eq!(tree.get(key), std_tree.get(key));
}

// keys from AvlTree must be present in BTreeMap.
for key in tree.get_keys() {
assert_eq!(tree.get(key), std_tree.get(key));
}

// AvlTree must stay balanced.
assert!(tree.root.as_ref().unwrap().balance_factor().abs() <= 1);

assert_eq!(tree.remove([i]), Some(vec![i]));
assert_eq!(std_tree.remove(&[i]), Some(vec![i]));
}

assert_eq!(tree.root, None);
assert!(std_tree.is_empty());
assert!(tree.root.is_none());
}

#[test]
Expand Down

0 comments on commit c8cfa04

Please sign in to comment.