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);
|
assert_eq!(control_subtree_leaves, test_subtree_leaves);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
// Helper for the below tests.
|
||||||
fn test_build_subtree_from_leaves() {
|
fn generate_entries(pair_count: u64) -> Vec<(RpoDigest, Word)> {
|
||||||
const PAIR_COUNT: u64 = u64::pow(2, 8);
|
(0..pair_count)
|
||||||
|
|
||||||
let entries: Vec<(RpoDigest, Word)> = (0..PAIR_COUNT)
|
|
||||||
.map(|i| {
|
.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 key = RpoDigest::new([ONE, ONE, Felt::new(i), Felt::new(leaf_index)]);
|
||||||
let value = [ONE, ONE, ONE, Felt::new(i)];
|
let value = [ONE, ONE, ONE, Felt::new(i)];
|
||||||
(key, value)
|
(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 control = Smt::with_entries(entries.clone()).unwrap();
|
||||||
|
|
||||||
let mut leaves: Vec<SubtreeLeaf> = entries
|
// `entries` should already be sorted by nature of how we constructed it.
|
||||||
.iter()
|
let leaves = Smt::sorted_pairs_to_leaves(entries).subtrees;
|
||||||
.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);
|
|
||||||
|
|
||||||
let (first_subtree, _) = Smt::build_subtree(leaves, SMT_DEPTH);
|
let (first_subtree, _) = Smt::build_subtree(leaves, SMT_DEPTH);
|
||||||
assert!(!first_subtree.is_empty());
|
assert!(!first_subtree.is_empty());
|
||||||
|
|
Loading…
Add table
Reference in a new issue