diff options
Diffstat (limited to 'tests/unit/script/textinput.rs')
-rw-r--r-- | tests/unit/script/textinput.rs | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/tests/unit/script/textinput.rs b/tests/unit/script/textinput.rs index 313ab62fe0a..74891b52cae 100644 --- a/tests/unit/script/textinput.rs +++ b/tests/unit/script/textinput.rs @@ -9,9 +9,9 @@ use msg::constellation_msg::{Key, KeyModifiers}; -#[cfg(target_os="macos")] +#[cfg(target_os = "macos")] use msg::constellation_msg::SUPER; -#[cfg(not(target_os="macos"))] +#[cfg(not(target_os = "macos"))] use msg::constellation_msg::CONTROL; use script::clipboard_provider::DummyClipboardContext; @@ -194,9 +194,9 @@ fn test_textinput_set_content() { #[test] fn test_clipboard_paste() { - #[cfg(target_os="macos")] + #[cfg(target_os = "macos")] const MODIFIERS: KeyModifiers = SUPER; - #[cfg(not(target_os="macos"))] + #[cfg(not(target_os = "macos"))] const MODIFIERS: KeyModifiers = CONTROL; let mut textinput = TextInput::new(Lines::Single, "defg".to_owned(), DummyClipboardContext::new("abc")); @@ -205,3 +205,57 @@ fn test_clipboard_paste() { textinput.handle_keydown_aux(Key::V, MODIFIERS); assert_eq!(textinput.get_content(), "abcdefg"); } + +#[test] +fn test_textinput_cursor_position_correct_after_clearing_selection() { + let mut textinput = TextInput::new(Lines::Single, "abcdef".to_owned(), DummyClipboardContext::new("")); + + // Single line - Forward + textinput.adjust_horizontal(3, Selection::Selected); + textinput.adjust_horizontal(1, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 3); + + textinput.adjust_horizontal(-3, Selection::NotSelected); + textinput.adjust_horizontal(3, Selection::Selected); + textinput.adjust_horizontal_by_one(Direction::Forward, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 3); + + // Single line - Backward + textinput.adjust_horizontal(-3, Selection::NotSelected); + textinput.adjust_horizontal(3, Selection::Selected); + textinput.adjust_horizontal(-1, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + + textinput.adjust_horizontal(-3, Selection::NotSelected); + textinput.adjust_horizontal(3, Selection::Selected); + textinput.adjust_horizontal_by_one(Direction::Backward, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + + + let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned(), DummyClipboardContext::new("")); + + // Multiline - Forward + textinput.adjust_horizontal(4, Selection::Selected); + textinput.adjust_horizontal(1, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + assert_eq!(textinput.edit_point.line, 1); + + textinput.adjust_horizontal(-4, Selection::NotSelected); + textinput.adjust_horizontal(4, Selection::Selected); + textinput.adjust_horizontal_by_one(Direction::Forward, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + assert_eq!(textinput.edit_point.line, 1); + + // Multiline - Backward + textinput.adjust_horizontal(-4, Selection::NotSelected); + textinput.adjust_horizontal(4, Selection::Selected); + textinput.adjust_horizontal(-1, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + assert_eq!(textinput.edit_point.line, 0); + + textinput.adjust_horizontal(-4, Selection::NotSelected); + textinput.adjust_horizontal(4, Selection::Selected); + textinput.adjust_horizontal_by_one(Direction::Backward, Selection::NotSelected); + assert_eq!(textinput.edit_point.index, 0); + assert_eq!(textinput.edit_point.line, 0); +} |