use ftui_core::geometry::Rect;
use ftui_render::frame::Frame;
use ftui_render::grapheme_pool::GraphemePool;
use ftui_widgets::StatefulWidget;
use ftui_widgets::textarea::{TextArea, TextAreaState};
#[test]
fn test_soft_wrap_cursor_movement_preserves_column() {
let text = "01234567890123456789"; let mut ta = TextArea::new().with_text(text).with_soft_wrap(true);
ta.move_to_document_start();
for _ in 0..5 {
ta.move_right();
}
assert_eq!(ta.cursor().visual_col, 5);
let mut state = TextAreaState::default();
let mut pool = GraphemePool::new();
let mut frame = Frame::new(10, 5, &mut pool);
let area = Rect::new(0, 0, 10, 2);
StatefulWidget::render(&ta, area, &mut frame, &mut state);
ta.move_down();
assert_eq!(
ta.cursor().visual_col,
15,
"Cursor should be at 15, but was {}",
ta.cursor().visual_col
);
}