Skip to content

Commit

Permalink
Fix panic with IdxRange size() method.
Browse files Browse the repository at this point in the history
  • Loading branch information
itsybitesyspider committed Apr 5, 2023
1 parent 7fc9d9a commit 999e63c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 6 deletions.
36 changes: 34 additions & 2 deletions src/idxsets/idxrange.rs
Expand Up @@ -28,11 +28,43 @@ impl IdxSet for IdxRange {
}

fn size(&self) -> usize {
((self.0.end - 1) / crate::bits::bitfield::BITS + 1)
- self.0.start / crate::bits::bitfield::BITS
if self.0.end <= self.0.start {
0
} else {
let bitfield_end = (self.0.end - 1) / crate::bits::bitfield::BITS + 1;
let bitfield_start = self.0.start / crate::bits::bitfield::BITS;
bitfield_end - bitfield_start
}
}

fn intersect(&self, idx: &Bitfield) -> Bitfield {
(*idx).clip(&self.0)
}
}


#[cfg(test)]
mod test {
use super::*;

#[test]
fn test_size_of_zero_length_idxrange() {
let zero_range = IdxRange(0..0);

assert_eq!(zero_range.size(), 0);
}

#[test]
fn test_size_of_single_length_idxrange() {
let zero_range = IdxRange(0..1);

assert_eq!(zero_range.size(), 1);
}

#[test]
fn test_size_of_short_idxrange() {
let zero_range = IdxRange(0..7);

assert_eq!(zero_range.size(), 1);
}
}
5 changes: 1 addition & 4 deletions src/types/entry.rs
Expand Up @@ -96,10 +96,7 @@ where
R: Debug,
{
self.get().or_else(|| {
panic!(format!(
"retriever: Entry::or_panic(): {:?} doesn't exist",
&self.id
))
panic!("retriever: Entry::or_panic(): {:?} doesn't exist",&self.id)
});

self
Expand Down

0 comments on commit 999e63c

Please sign in to comment.