Skip to content

Commit 38552b3

Browse files
committed
Relax thresholds for index_hash_distribution test and add more asserts
1 parent f9456c2 commit 38552b3

1 file changed

Lines changed: 38 additions & 27 deletions

File tree

src/lib.rs

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -591,27 +591,33 @@ mod tests {
591591

592592
#[test]
593593
fn seeded_is_same() {
594-
let num_bits = 1 << 13;
595-
let sample_vals = member_nums(1000).collect::<Vec<_>>();
596-
for x in 0u8..10 {
597-
let seed = x as u128;
598-
assert_eq!(
599-
BloomFilter::with_num_bits(num_bits)
600-
.seed(&seed)
601-
.items(sample_vals.iter()),
602-
BloomFilter::with_num_bits(num_bits)
603-
.seed(&seed)
604-
.items(sample_vals.iter())
605-
);
606-
assert!(
607-
!(BloomFilter::with_num_bits(num_bits)
608-
.seed(&(seed + 1))
609-
.items(sample_vals.iter())
610-
== BloomFilter::with_num_bits(num_bits)
594+
fn seeded_is_same_<const N: usize>() {
595+
let num_bits = 1 << 10;
596+
let sample_vals = member_nums(1000).collect::<Vec<_>>();
597+
for x in 0u8..32 {
598+
let seed = x as u128;
599+
assert_eq!(
600+
BloomFilter::new_builder::<N>(num_bits)
611601
.seed(&seed)
612-
.items(sample_vals.iter()))
613-
);
602+
.items(sample_vals.iter()),
603+
BloomFilter::new_builder::<N>(num_bits)
604+
.seed(&seed)
605+
.items(sample_vals.iter())
606+
);
607+
assert!(
608+
!(BloomFilter::new_builder::<N>(num_bits)
609+
.seed(&(seed + 1))
610+
.items(sample_vals.iter())
611+
== BloomFilter::new_builder::<N>(num_bits)
612+
.seed(&seed)
613+
.items(sample_vals.iter()))
614+
);
615+
}
614616
}
617+
seeded_is_same_::<512>();
618+
seeded_is_same_::<256>();
619+
seeded_is_same_::<128>();
620+
seeded_is_same_::<64>();
615621
}
616622

617623
#[test]
@@ -656,7 +662,10 @@ mod tests {
656662
let thresh = (expected as f64 * err) as i64;
657663
for x in distr {
658664
let diff = (*x as i64 - expected).abs();
659-
assert!(diff <= thresh, "{x:?} deviates from {expected:?}");
665+
assert!(
666+
diff <= thresh,
667+
"{x:?} deviates from {expected:?}\nDistribution: {distr:?}"
668+
);
660669
}
661670
}
662671

@@ -707,21 +716,23 @@ mod tests {
707716
#[test]
708717
fn index_hash_distribution() {
709718
fn index_hash_distribution_<const N: usize>(thresh_pct: f64) {
710-
let filter: BloomFilter<N> = BloomFilter::new_builder(1).seed(&0).hashes(1);
719+
let filter: BloomFilter<N> = BloomFilter::new_builder(1).seed(&42).hashes(1);
711720
let [mut h1, h2] = get_orginal_hashes(&filter.hasher, "qwerty");
712-
let mut counts = vec![0; N];
713-
let iterations = 10000 * N as u64;
721+
assert_eq!(h1, 10593016135521423434);
722+
assert_eq!(h2, 17953629391013907857);
723+
let mut counts = [0; N];
724+
let iterations = TRIALS * N;
714725
for _ in 0..iterations {
715726
let bit_index = BloomFilter::<N>::bit_index(&mut h1, h2);
716727
let index = bit_index % N;
717728
counts[index] += 1;
718729
}
719730
assert_even_distribution(&counts, thresh_pct);
720731
}
721-
index_hash_distribution_::<512>(0.05);
722-
index_hash_distribution_::<256>(0.05);
723-
index_hash_distribution_::<128>(0.05);
724-
index_hash_distribution_::<64>(0.05);
732+
index_hash_distribution_::<512>(0.25);
733+
index_hash_distribution_::<256>(0.25);
734+
index_hash_distribution_::<128>(0.25);
735+
index_hash_distribution_::<64>(0.25);
725736
}
726737

727738
#[test]

0 commit comments

Comments
 (0)