Exclude empty columns on the right from the prerender cache
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user