use gpui::{EntityInputHandler, TestAppContext};
use ui::input::TextField;
#[gpui::test]
fn composition_selection_is_relative_to_replacement_text(cx: &mut TestAppContext) {
cx.update(|cx| theme::Theme::install(theme::Appearance::Dark, cx));
let window = cx.add_window(|_, cx| TextField::new(cx));
window
.update(cx, |field, window, cx| {
field.set_content("ä¸abc!", cx);
field.replace_and_mark_text_in_range(Some(1..4), "😀文", Some(0..2), window, cx);
assert_eq!(field.content().as_ref(), "ä¸ðŸ˜€æ–‡!");
assert_eq!(field.marked_text_range(window, cx), Some(1..4));
assert_eq!(
field.selected_text_range(false, window, cx).unwrap().range,
1..3
);
field.replace_and_mark_text_in_range(None, "䏿–‡", Some(1..1), window, cx);
assert_eq!(field.content().as_ref(), "ä¸ä¸æ–‡!");
assert_eq!(
field.selected_text_range(false, window, cx).unwrap().range,
2..2
);
field.replace_text_in_range(None, "æ–‡", window, cx);
assert_eq!(field.content().as_ref(), "䏿–‡!");
assert_eq!(field.marked_text_range(window, cx), None);
})
.unwrap();
}