Skip to content

Commit

Permalink
Merge pull request #15 from itsybitesyspider/itsy/fix-panic-with-idxr…
Browse files Browse the repository at this point in the history
…ange-size

Fix panic with IdxRange size() method.
  • Loading branch information
itsybitesyspider committed Apr 5, 2023
2 parents 7fc9d9a + 1d37a6e commit 7312541
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 8 deletions.
35 changes: 33 additions & 2 deletions src/idxsets/idxrange.rs
Expand Up @@ -28,11 +28,42 @@ 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);
}
}
8 changes: 2 additions & 6 deletions src/types/entry.rs
Expand Up @@ -95,12 +95,8 @@ where
where
R: Debug,
{
self.get().or_else(|| {
panic!(format!(
"retriever: Entry::or_panic(): {:?} doesn't exist",
&self.id
))
});
self.get()
.or_else(|| panic!("retriever: Entry::or_panic(): {:?} doesn't exist", &self.id));

self
}
Expand Down

0 comments on commit 7312541

Please sign in to comment.