diff --git a/src/bp_tree.rs b/src/bp_tree.rs index d68eabfddb0da157371b892bc03c7216aabb3a81..39c44e684ccfbf89982f11e8d1de0162da1e41db 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 fad2a5cc5530ccf2dc67998925810e9429661638..9ff3b79f2ec51e7627bd9efccd178a63ba2b7d2e 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> {