diff options
Diffstat (limited to 'tests/unit/script/textinput.rs')
-rw-r--r-- | tests/unit/script/textinput.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/unit/script/textinput.rs b/tests/unit/script/textinput.rs index f5ee2feeb35..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, |