Exclude empty columns on the right from the prerender cache

This commit is contained in:
2023-11-05 10:53:06 +01:00
parent 3317024231
commit 36540ea4be
4 changed files with 79 additions and 12 deletions

View File

@ -89,12 +89,72 @@ fn test_single_item_cached() {
text: Text::raw("hello"),
prerender: &prerender,
};
let mut buf = Buffer::empty(rect(0, 0, 18, 8));
bl.draw_items(&mut buf, area, vec![item].into_iter())
.context("Failed to draw")
.unwrap();
assert_eq!(buf, expected);
}
/// Checks that the prerender cache does not store empty columns to the right
#[test]
fn test_only_necessary_width() {
let mut bl = Backlog::default();
let prerender1 = Prerender::new();
let prerender2 = Prerender::new();
let item1 = BufferItem {
text: Text::raw("hi\nworld"),
prerender: &prerender1,
};
let item2 = BufferItem {
text: Text::raw(":)"),
prerender: &prerender2,
};
let mut cell = ratatui::buffer::Cell::default();
cell.set_char('.');
let mut buf = Buffer::filled(rect(0, 0, 18, 7), &cell); // poisoned buffer
let area = rect(3, 1, 12, 5);
bl.draw_items(&mut buf, area, vec![item2, item1].into_iter())
.context("Failed to draw")
.unwrap();
let expected = Buffer::with_lines(vec![
"..................",
"...┌──────────┐...",
"...│hi........│...",
"...│world.....│...",
"...│:)........│...",
"...└──────────┘...",
"..................",
]);
assert_eq!(buf, expected);
assert_eq!(prerender1.key(), Some(10));
let item1 = BufferItem {
text: Text::raw("hi\nworld"),
prerender: &prerender1,
};
let item2 = BufferItem {
text: Text::raw(":)"),
prerender: &prerender2,
};
let mut buf = Buffer::empty(rect(0, 0, 18, 7));
bl.draw_items(&mut buf, area, vec![item2, item1].into_iter())
.context("Failed to draw")
.unwrap();
let expected = Buffer::with_lines(vec![
" ",
" ┌──────────┐ ",
" │hi... │ ", // dots are leftover from the poisoned buffer above
" │world │ ",
" │:) │ ",
" └──────────┘ ",
" ",
]);
assert_eq!(buf, expected);
}
#[test]
fn test_single_item_tight() {
let mut bl = Backlog::default();