mirror of
https://github.com/servo/servo
synced 2026-05-05 06:32:13 +02:00
159 lines
5.6 KiB
Rust
159 lines
5.6 KiB
Rust
use script::textinput::{TextInput, Selection, Lines, DeleteDir};
|
|
use std::borrow::ToOwned;
|
|
|
|
#[test]
|
|
fn test_textinput_delete_char() {
|
|
let mut textinput = TextInput::new(Lines::Single, "abcdefg".to_owned());
|
|
textinput.adjust_horizontal(2, Selection::NotSelected);
|
|
textinput.delete_char(DeleteDir::Backward);
|
|
assert_eq!(textinput.get_content(), "acdefg");
|
|
|
|
textinput.delete_char(DeleteDir::Forward);
|
|
assert_eq!(textinput.get_content(), "adefg");
|
|
|
|
textinput.adjust_horizontal(2, Selection::Selected);
|
|
textinput.delete_char(DeleteDir::Forward);
|
|
assert_eq!(textinput.get_content(), "afg");
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_insert_char() {
|
|
let mut textinput = TextInput::new(Lines::Single, "abcdefg".to_owned());
|
|
textinput.adjust_horizontal(2, Selection::NotSelected);
|
|
textinput.insert_char('a');
|
|
assert_eq!(textinput.get_content(), "abacdefg");
|
|
|
|
textinput.adjust_horizontal(2, Selection::Selected);
|
|
textinput.insert_char('b');
|
|
assert_eq!(textinput.get_content(), "ababefg");
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_get_sorted_selection() {
|
|
let mut textinput = TextInput::new(Lines::Single, "abcdefg".to_owned());
|
|
textinput.adjust_horizontal(2, Selection::NotSelected);
|
|
textinput.adjust_horizontal(2, Selection::Selected);
|
|
let (begin, end) = textinput.get_sorted_selection();
|
|
assert_eq!(begin.index, 2);
|
|
assert_eq!(end.index, 4);
|
|
|
|
textinput.clear_selection();
|
|
|
|
textinput.adjust_horizontal(-2, Selection::Selected);
|
|
let (begin, end) = textinput.get_sorted_selection();
|
|
assert_eq!(begin.index, 2);
|
|
assert_eq!(end.index, 4);
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_replace_selection() {
|
|
let mut textinput = TextInput::new(Lines::Single, "abcdefg".to_owned());
|
|
textinput.adjust_horizontal(2, Selection::NotSelected);
|
|
textinput.adjust_horizontal(2, Selection::Selected);
|
|
|
|
textinput.replace_selection("xyz".to_owned());
|
|
assert_eq!(textinput.get_content(), "abxyzefg");
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_current_line_length() {
|
|
let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
assert_eq!(textinput.current_line_length(), 3);
|
|
|
|
textinput.adjust_vertical(1, Selection::NotSelected);
|
|
assert_eq!(textinput.current_line_length(), 2);
|
|
|
|
textinput.adjust_vertical(1, Selection::NotSelected);
|
|
assert_eq!(textinput.current_line_length(), 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_adjust_vertical() {
|
|
let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
textinput.adjust_horizontal(3, Selection::NotSelected);
|
|
textinput.adjust_vertical(1, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 1);
|
|
assert_eq!(textinput.edit_point.index, 2);
|
|
|
|
textinput.adjust_vertical(-1, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 0);
|
|
assert_eq!(textinput.edit_point.index, 2);
|
|
|
|
textinput.adjust_vertical(2, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 2);
|
|
assert_eq!(textinput.edit_point.index, 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_adjust_horizontal() {
|
|
let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
textinput.adjust_horizontal(4, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 1);
|
|
assert_eq!(textinput.edit_point.index, 0);
|
|
|
|
textinput.adjust_horizontal(1, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 1);
|
|
assert_eq!(textinput.edit_point.index, 1);
|
|
|
|
textinput.adjust_horizontal(2, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 2);
|
|
assert_eq!(textinput.edit_point.index, 0);
|
|
|
|
textinput.adjust_horizontal(-1, Selection::NotSelected);
|
|
assert_eq!(textinput.edit_point.line, 1);
|
|
assert_eq!(textinput.edit_point.index, 2);
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_handle_return() {
|
|
let mut single_line_textinput = TextInput::new(Lines::Single, "abcdef".to_owned());
|
|
single_line_textinput.adjust_horizontal(3, Selection::NotSelected);
|
|
single_line_textinput.handle_return();
|
|
assert_eq!(single_line_textinput.get_content(), "abcdef");
|
|
|
|
let mut multi_line_textinput = TextInput::new(Lines::Multiple, "abcdef".to_owned());
|
|
multi_line_textinput.adjust_horizontal(3, Selection::NotSelected);
|
|
multi_line_textinput.handle_return();
|
|
assert_eq!(multi_line_textinput.get_content(), "abc\ndef");
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_select_all() {
|
|
let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
assert_eq!(textinput.edit_point.line, 0);
|
|
assert_eq!(textinput.edit_point.index, 0);
|
|
|
|
textinput.select_all();
|
|
assert_eq!(textinput.edit_point.line, 2);
|
|
assert_eq!(textinput.edit_point.index, 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_get_content() {
|
|
let single_line_textinput = TextInput::new(Lines::Single, "abcdefg".to_owned());
|
|
assert_eq!(single_line_textinput.get_content(), "abcdefg");
|
|
|
|
let multi_line_textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
assert_eq!(multi_line_textinput.get_content(), "abc\nde\nf");
|
|
}
|
|
|
|
#[test]
|
|
fn test_textinput_set_content() {
|
|
let mut textinput = TextInput::new(Lines::Multiple, "abc\nde\nf".to_owned());
|
|
assert_eq!(textinput.get_content(), "abc\nde\nf");
|
|
|
|
textinput.set_content("abc\nf".to_owned());
|
|
assert_eq!(textinput.get_content(), "abc\nf");
|
|
|
|
assert_eq!(textinput.edit_point.line, 0);
|
|
assert_eq!(textinput.edit_point.index, 0);
|
|
textinput.adjust_horizontal(3, Selection::Selected);
|
|
assert_eq!(textinput.edit_point.line, 0);
|
|
assert_eq!(textinput.edit_point.index, 3);
|
|
textinput.set_content("de".to_owned());
|
|
assert_eq!(textinput.get_content(), "de");
|
|
assert_eq!(textinput.edit_point.line, 0);
|
|
assert_eq!(textinput.edit_point.index, 2);
|
|
}
|
|
|