diff options
Diffstat (limited to 'tests/unit/script/textinput.rs')
-rw-r--r-- | tests/unit/script/textinput.rs | 71 |
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); |