refactor test_build_subtree_from_leaves()
This commit is contained in:
parent
98e5e0a5b2
commit
1bc790586a
1 changed files with 15 additions and 18 deletions
|
@ -683,32 +683,29 @@ mod test {
|
|||
assert_eq!(control_subtree_leaves, test_subtree_leaves);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_build_subtree_from_leaves() {
|
||||
const PAIR_COUNT: u64 = u64::pow(2, 8);
|
||||
|
||||
let entries: Vec<(RpoDigest, Word)> = (0..PAIR_COUNT)
|
||||
// Helper for the below tests.
|
||||
fn generate_entries(pair_count: u64) -> Vec<(RpoDigest, Word)> {
|
||||
(0..pair_count)
|
||||
.map(|i| {
|
||||
let leaf_index = ((i as f64 / PAIR_COUNT as f64) * (PAIR_COUNT as f64)) as u64;
|
||||
let leaf_index = ((i as f64 / pair_count as f64) * (pair_count as f64)) as u64;
|
||||
let key = RpoDigest::new([ONE, ONE, Felt::new(i), Felt::new(leaf_index)]);
|
||||
let value = [ONE, ONE, ONE, Felt::new(i)];
|
||||
(key, value)
|
||||
})
|
||||
.collect();
|
||||
.collect()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_build_subtree_from_leaves() {
|
||||
// A single subtree's worth of leaves.
|
||||
const PAIR_COUNT: u64 = 256;
|
||||
|
||||
let entries = generate_entries(PAIR_COUNT);
|
||||
|
||||
let control = Smt::with_entries(entries.clone()).unwrap();
|
||||
|
||||
let mut leaves: Vec<SubtreeLeaf> = entries
|
||||
.iter()
|
||||
.map(|(key, value)| {
|
||||
let leaf = SmtLeaf::new_single(*key, *value);
|
||||
let col = leaf.index().index.value();
|
||||
let hash = leaf.hash();
|
||||
SubtreeLeaf { col, hash }
|
||||
})
|
||||
.collect();
|
||||
leaves.sort();
|
||||
leaves.dedup_by_key(|leaf| leaf.col);
|
||||
// `entries` should already be sorted by nature of how we constructed it.
|
||||
let leaves = Smt::sorted_pairs_to_leaves(entries).subtrees;
|
||||
|
||||
let (first_subtree, _) = Smt::build_subtree(leaves, SMT_DEPTH);
|
||||
assert!(!first_subtree.is_empty());
|
||||
|
|
Loading…
Add table
Reference in a new issue