use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::{Frame, Terminal};
pub fn render_buffer(width: u16, height: u16, draw: impl FnOnce(&mut Frame)) -> Buffer {
let mut terminal = Terminal::new(TestBackend::new(width, height)).unwrap();
terminal.draw(draw).unwrap();
terminal.backend().buffer().clone()
}
pub fn render_text(width: u16, height: u16, draw: impl FnOnce(&mut Frame)) -> String {
buf_text(&render_buffer(width, height, draw), "")
}
pub fn render_lines(width: u16, height: u16, draw: impl FnOnce(&mut Frame)) -> String {
buf_text(&render_buffer(width, height, draw), "\n")
}
fn buf_text(buf: &Buffer, row_end: &str) -> String {
let area = buf.area();
let mut s = String::new();
for y in area.top()..area.bottom() {
for x in area.left()..area.right() {
s.push_str(buf[(x, y)].symbol());
}
s.push_str(row_end);
}
s
}