Fix a bug in get_bit()

This commit is contained in:
Igor Katson 2023-11-30 14:49:39 +00:00
parent fee2690aae
commit 16a4d22b6b
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
2 changed files with 13 additions and 2 deletions

View file

@ -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);
}
}
}

View file

@ -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
}