diff --git a/crates/dht/src/routing_table.rs b/crates/dht/src/routing_table.rs index 325d93c..fe447af 100644 --- a/crates/dht/src/routing_table.rs +++ b/crates/dht/src/routing_table.rs @@ -682,7 +682,7 @@ mod tests { use crate::routing_table::compute_split_start_end; - use super::RoutingTable; + use super::{generate_random_id, RoutingTable}; #[test] fn compute_split_start_end_root() { @@ -790,4 +790,15 @@ mod tests { let v = serde_json::to_vec(&table).unwrap(); let _: RoutingTable = serde_json::from_reader(Cursor::new(v)).unwrap(); } + + #[test] + fn test_generate_random_id() { + let start = Id20::from_str("3000000000000000000000000000000000000000").unwrap(); + let end = Id20::from_str("3fffffffffffffffffffffffffffffffffffffff").unwrap(); + let bits = 156; + for _ in 0..100 { + let id = dbg!(generate_random_id(&start, bits)); + assert!(id >= start && id <= end, "{:?}", id); + } + } } diff --git a/crates/librqbit_core/src/id20.rs b/crates/librqbit_core/src/id20.rs index 8562a3d..2492f78 100644 --- a/crates/librqbit_core/src/id20.rs +++ b/crates/librqbit_core/src/id20.rs @@ -104,7 +104,7 @@ impl Id20 { } pub fn get_bit(&self, bit: u8) -> bool { let n = self.0[(bit / 8) as usize]; - let mask = !(1 << (7 - bit % 8)); + let mask = 1 << (7 - bit % 8); n & mask > 0 }