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.rs71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/unit/script/textinput.rs b/tests/unit/script/textinput.rs
index 2613c0f640a..318612e64af 100644
--- a/tests/unit/script/textinput.rs
+++ b/tests/unit/script/textinput.rs
@@ -118,6 +118,55 @@ fn test_single_line_textinput_with_max_length_doesnt_allow_appending_characters_
}
#[test]
+fn test_single_line_textinput_with_max_length_multibyte() {
+ let mut textinput = TextInput::new(
+ Lines::Single,
+ DOMString::from(""),
+ DummyClipboardContext::new(""),
+ Some(2)
+ );
+
+ textinput.insert_char('á');
+ assert_eq!(textinput.get_content(), "á");
+ textinput.insert_char('é');
+ assert_eq!(textinput.get_content(), "áé");
+ textinput.insert_char('i');
+ assert_eq!(textinput.get_content(), "áé");
+}
+
+#[test]
+fn test_single_line_textinput_with_max_length_multi_code_unit() {
+ let mut textinput = TextInput::new(
+ Lines::Single,
+ DOMString::from(""),
+ DummyClipboardContext::new(""),
+ Some(3)
+ );
+
+ textinput.insert_char('\u{10437}');
+ assert_eq!(textinput.get_content(), "\u{10437}");
+ textinput.insert_char('\u{10437}');
+ assert_eq!(textinput.get_content(), "\u{10437}");
+ textinput.insert_char('x');
+ assert_eq!(textinput.get_content(), "\u{10437}x");
+ textinput.insert_char('x');
+ assert_eq!(textinput.get_content(), "\u{10437}x");
+}
+
+#[test]
+fn test_single_line_textinput_with_max_length_inside_char() {
+ let mut textinput = TextInput::new(
+ Lines::Single,
+ DOMString::from("\u{10437}"),
+ DummyClipboardContext::new(""),
+ Some(1)
+ );
+
+ textinput.insert_char('x');
+ assert_eq!(textinput.get_content(), "\u{10437}");
+}
+
+#[test]
fn test_single_line_textinput_with_max_length_doesnt_allow_appending_characters_after_max_length_is_reached() {
let mut textinput = TextInput::new(
Lines::Single,
@@ -207,6 +256,15 @@ fn test_textinput_replace_selection() {
}
#[test]
+fn test_textinput_replace_selection_multibyte_char() {
+ let mut textinput = text_input(Lines::Single, "é");
+ textinput.adjust_horizontal_by_one(Direction::Forward, Selection::Selected);
+
+ textinput.replace_selection(DOMString::from("e"));
+ assert_eq!(textinput.get_content(), "e");
+}
+
+#[test]
fn test_textinput_current_line_length() {
let mut textinput = text_input(Lines::Multiple, "abc\nde\nf");
assert_eq!(textinput.current_line_length(), 3);
@@ -236,6 +294,19 @@ fn test_textinput_adjust_vertical() {
}
#[test]
+fn test_textinput_adjust_vertical_multibyte() {
+ let mut textinput = text_input(Lines::Multiple, "áé\nae");
+
+ textinput.adjust_horizontal_by_one(Direction::Forward, Selection::NotSelected);
+ assert_eq!(textinput.edit_point.line, 0);
+ assert_eq!(textinput.edit_point.index, 2);
+
+ textinput.adjust_vertical(1, Selection::NotSelected);
+ assert_eq!(textinput.edit_point.line, 1);
+ assert_eq!(textinput.edit_point.index, 1);
+}
+
+#[test]
fn test_textinput_adjust_horizontal() {
let mut textinput = text_input(Lines::Multiple, "abc\nde\nf");
textinput.adjust_horizontal(4, Selection::NotSelected);