From d1b43f1c5503583b4b30caace31b3d239cd9d3d8 Mon Sep 17 00:00:00 2001 From: Daniel Rose <droseger@protonmail.com> Date: Fri, 13 Jul 2018 11:04:18 +0200 Subject: [PATCH] [MinMax] rank1, rank0: improve error checking, update tests --- src/common/min_max.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/min_max.rs b/src/common/min_max.rs index 9ff3b79..0de66c5 100644 --- a/src/common/min_max.rs +++ b/src/common/min_max.rs @@ -466,8 +466,7 @@ impl MinMax { } pub fn rank_0(&self, index: u64) -> Result<u64, NodeError> { - let result = (index - self.rank_1(index).unwrap()) as i64; - if result < 0 { + if index >= self.bits.len() { return Err(NodeError::NotANodeError); } Ok(index - self.rank_1(index).unwrap() + 1) @@ -731,6 +730,7 @@ mod tests { let min_max = MinMax::new(bits, 4); assert_eq!(min_max.rank_1(11).unwrap(), 7); assert_eq!(min_max.rank_1(21).unwrap(), 11); + assert_eq!(min_max.rank_1(22).unwrap_err(), NodeError::NotANodeError); } #[test] @@ -743,6 +743,7 @@ mod tests { assert_eq!(min_max.rank_0(12).unwrap(), 6); assert_eq!(min_max.rank_0(17).unwrap(), 7); assert_eq!(min_max.rank_0(21).unwrap(), 11); + assert_eq!(min_max.rank_0(22).unwrap_err(), NodeError::NotANodeError); } #[test] -- GitLab