use ftui_core::geometry::Rect;
use ftui_render::buffer::Buffer;
use ftui_render::cell::Cell;
use ftui_render::diff::BufferDiff;
use ftui_render::presenter::{Presenter, TerminalCapabilities};
#[test]
fn wide_char_clipped_tail_atomic_rejection() {
let mut buffer = Buffer::new(10, 1);
buffer.set(1, 0, Cell::from_char('A'));
buffer.push_scissor(Rect::new(0, 0, 1, 1));
buffer.set(0, 0, Cell::from_char('中'));
let head = buffer.get(0, 0).unwrap();
let tail = buffer.get(1, 0).unwrap();
assert!(head.is_empty(), "Head should be empty (atomic rejection)");
assert_eq!(tail.content.as_char(), Some('A'), "Tail should remain 'A'");
let old = Buffer::new(10, 1);
let diff = BufferDiff::compute(&old, &buffer);
let mut output = Vec::new();
let mut presenter = Presenter::new(&mut output, TerminalCapabilities::basic());
presenter.present(&buffer, &diff).unwrap();
drop(presenter);
let output_str = String::from_utf8_lossy(&output);
println!("Output: {:?}", output_str);
assert!(!output_str.contains('中'));
assert!(output_str.contains('A'));
}