From 8cfad8e362cd4438a837b8947b1345c54ebb82a0 Mon Sep 17 00:00:00 2001 From: David Mehren <dmehren1@gmail.com> Date: Fri, 13 Jul 2018 10:46:39 +0200 Subject: [PATCH] [BPTree/MinMax] Fix enclose() and parent() --- src/bp_tree.rs | 3 +-- src/common/min_max.rs | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/bp_tree.rs b/src/bp_tree.rs index d68eabf..39c44e6 100644 --- a/src/bp_tree.rs +++ b/src/bp_tree.rs @@ -79,7 +79,7 @@ impl<L: PartialEq + Clone + Debug> SuccinctTree<BPTree<L>, L> for BPTree<L> { if index == 0 { Err(NodeError::HasNoParentError) } else { - Ok(self.minmax.enclose(index)?) + Ok(self.minmax.enclose(index)? as u64) } } @@ -362,7 +362,6 @@ mod tests { } #[test] - #[ignore] fn parent() { let bitvec = bit_vec!(true, true, false, false); let tree: BPTree<String> = BPTree::from_bitvec(bitvec.clone()).unwrap(); diff --git a/src/common/min_max.rs b/src/common/min_max.rs index fad2a5c..9ff3b79 100644 --- a/src/common/min_max.rs +++ b/src/common/min_max.rs @@ -312,7 +312,7 @@ impl MinMax { Ok(position_in_block) } - fn bwd_search(&self, index: u64, diff: i64) -> Result<u64, NodeError> { + fn bwd_search(&self, index: u64, diff: i64) -> Result<i64, NodeError> { let mut block_no = index / self.block_size; let mut begin_of_block = block_no * self.block_size; let mut end_of_block = begin_of_block + self.block_size - 1; @@ -419,10 +419,10 @@ impl MinMax { } } if found { - Ok(position) + Ok(position as i64) } else { //todo konnte nicht gefunden werden!! - Ok(10000000) + Ok(-1) } } @@ -430,8 +430,8 @@ impl MinMax { self.fwd_search(index, 0) } - pub fn enclose(&self, index: u64) -> Result<u64, NodeError> { - self.bwd_search(index, 1) + pub fn enclose(&self, index: u64) -> Result<i64, NodeError> { + Ok(self.bwd_search(index, 2)? + 1) } pub fn rank_1(&self, index: u64) -> Result<u64, NodeError> { -- GitLab