Skip to content

Commit

Permalink
Fix bugs in ScanRange::truncate_*
Browse files Browse the repository at this point in the history
  • Loading branch information
str4d committed Jul 12, 2023
1 parent acc78f2 commit 14c245f
Showing 1 changed file with 53 additions and 2 deletions.
55 changes: 53 additions & 2 deletions zcash_client_backend/src/data_api/scanning.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ impl ScanRange {
None
} else {
Some(ScanRange {
block_range: block_height..self.block_range.end,
block_range: self.block_range.start.max(block_height)..self.block_range.end,
priority: self.priority,
})
}
Expand All @@ -79,7 +79,7 @@ impl ScanRange {
None
} else {
Some(ScanRange {
block_range: self.block_range.start..block_height,
block_range: self.block_range.start..self.block_range.end.min(block_height),
priority: self.priority,
})
}
Expand All @@ -105,3 +105,54 @@ impl ScanRange {
}
}
}

#[cfg(test)]
mod tests {
use super::{ScanPriority, ScanRange};

fn scan_range(start: u32, end: u32) -> ScanRange {
ScanRange::from_parts((start.into())..(end.into()), ScanPriority::Scanned)
}

#[test]
fn truncate_start() {
let r = scan_range(5, 8);

assert_eq!(r.truncate_start(4.into()), Some(scan_range(5, 8)));
assert_eq!(r.truncate_start(5.into()), Some(scan_range(5, 8)));
assert_eq!(r.truncate_start(6.into()), Some(scan_range(6, 8)));
assert_eq!(r.truncate_start(7.into()), Some(scan_range(7, 8)));
assert_eq!(r.truncate_start(8.into()), None);
assert_eq!(r.truncate_start(9.into()), None);
}

#[test]
fn truncate_end() {
let r = scan_range(5, 8);

assert_eq!(r.truncate_end(9.into()), Some(scan_range(5, 8)));
assert_eq!(r.truncate_end(8.into()), Some(scan_range(5, 8)));
assert_eq!(r.truncate_end(7.into()), Some(scan_range(5, 7)));
assert_eq!(r.truncate_end(6.into()), Some(scan_range(5, 6)));
assert_eq!(r.truncate_end(5.into()), None);
assert_eq!(r.truncate_end(4.into()), None);
}

#[test]
fn split_at() {
let r = scan_range(5, 8);

assert_eq!(r.split_at(4.into()), None);
assert_eq!(r.split_at(5.into()), None);
assert_eq!(
r.split_at(6.into()),
Some((scan_range(5, 6), scan_range(6, 8)))
);
assert_eq!(
r.split_at(7.into()),
Some((scan_range(5, 7), scan_range(7, 8)))
);
assert_eq!(r.split_at(8.into()), None);
assert_eq!(r.split_at(9.into()), None);
}
}

0 comments on commit 14c245f

Please sign in to comment.