use ftui_render::buffer::Buffer;
use ftui_render::cell::Cell;
use ftui_render::diff::BufferDiff;
use ftui_render::presenter::{Presenter, TerminalCapabilities};
use std::time::Instant;
#[test]
fn regression_plan_row_quadratic_perf() {
let width = 20000u16;
let height = 1u16;
let mut buffer = Buffer::new(width, height);
for x in (0..width).step_by(2) {
buffer.set_raw(x, 0, Cell::from_char('X'));
}
let old = Buffer::new(width, height);
let diff = BufferDiff::compute(&old, &buffer);
let caps = TerminalCapabilities::basic();
let mut presenter = Presenter::new(Vec::new(), caps);
let start = Instant::now();
presenter.present(&buffer, &diff).unwrap();
let elapsed = start.elapsed();
println!("Elapsed: {:?}", elapsed);
assert!(
elapsed.as_millis() < 100,
"Presenter took too long: {:?} (quadratic blowup?)",
elapsed
);
}