fix(explore): handle cursor size zero using saturating_sub

This commit is contained in:
Chetan baliyan 2024-12-15 20:49:37 +05:30
parent baf86dfb0e
commit eb86d549a1

View File

@ -36,7 +36,7 @@ impl Cursor {
/// The max position the cursor can be at
pub fn end(&self) -> usize {
self.size - 1
self.size.saturating_sub(1)
}
/// Set the position to a specific value within the bounds [0, end]
@ -121,4 +121,28 @@ mod tests {
cursor.move_backward(3);
assert_eq!(cursor.position, 0);
}
#[test]
fn test_cursor_size_zero_handling() {
let cursor = Cursor::new(0);
assert_eq!(cursor.end(), 0);
let mut cursor = Cursor::new(0);
cursor.move_forward(1);
assert_eq!(cursor.position, 0);
cursor.move_backward(1);
assert_eq!(cursor.position, 0);
}
#[test]
fn test_cursor_size_one() {
let mut cursor = Cursor::new(1);
assert_eq!(cursor.end(), 0);
cursor.move_forward(1);
assert_eq!(cursor.position, 0);
}
}