aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/script/textinput.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/script/textinput.rs')
-rw-r--r--tests/unit/script/textinput.rs62
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);
+}