Skip to content
Snippets Groups Projects
Unverified Commit d1b43f1c authored by Daniel Rose's avatar Daniel Rose
Browse files

[MinMax] rank1, rank0: improve error checking, update tests

parent 8cfad8e3
No related branches found
No related tags found
No related merge requests found
...@@ -466,8 +466,7 @@ impl MinMax { ...@@ -466,8 +466,7 @@ impl MinMax {
} }
pub fn rank_0(&self, index: u64) -> Result<u64, NodeError> { pub fn rank_0(&self, index: u64) -> Result<u64, NodeError> {
let result = (index - self.rank_1(index).unwrap()) as i64; if index >= self.bits.len() {
if result < 0 {
return Err(NodeError::NotANodeError); return Err(NodeError::NotANodeError);
} }
Ok(index - self.rank_1(index).unwrap() + 1) Ok(index - self.rank_1(index).unwrap() + 1)
...@@ -731,6 +730,7 @@ mod tests { ...@@ -731,6 +730,7 @@ mod tests {
let min_max = MinMax::new(bits, 4); let min_max = MinMax::new(bits, 4);
assert_eq!(min_max.rank_1(11).unwrap(), 7); assert_eq!(min_max.rank_1(11).unwrap(), 7);
assert_eq!(min_max.rank_1(21).unwrap(), 11); assert_eq!(min_max.rank_1(21).unwrap(), 11);
assert_eq!(min_max.rank_1(22).unwrap_err(), NodeError::NotANodeError);
} }
#[test] #[test]
...@@ -743,6 +743,7 @@ mod tests { ...@@ -743,6 +743,7 @@ mod tests {
assert_eq!(min_max.rank_0(12).unwrap(), 6); assert_eq!(min_max.rank_0(12).unwrap(), 6);
assert_eq!(min_max.rank_0(17).unwrap(), 7); assert_eq!(min_max.rank_0(17).unwrap(), 7);
assert_eq!(min_max.rank_0(21).unwrap(), 11); assert_eq!(min_max.rank_0(21).unwrap(), 11);
assert_eq!(min_max.rank_0(22).unwrap_err(), NodeError::NotANodeError);
} }
#[test] #[test]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment