Cover public text editing behavior
This commit is contained in:
1 parent
f8b7912181
commit
2d15195a58
1 file changed
+67
@@ -0,0 +1,67 @@
|
||||
use iris::prelude::*;
|
||||
|
||||
fn editor(text: &str, mode: EditMode) -> (TextEdit, TextData) {
|
||||
let view = TextView::new(TextBuffer::new(text), TextAttrs::default(), None);
|
||||
(TextEdit::new(view, mode), TextData::default())
|
||||
}
|
||||
|
||||
fn press(edit: &mut TextEditCtx<'_>, x: f32) {
|
||||
edit.select(vec2(x, 10.0), vec2(400.0, 200.0), false, false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pressing_an_empty_field_places_input() {
|
||||
let (mut text, mut data) = editor("", EditMode::SingleLine);
|
||||
let mut edit = TextEditCtx {
|
||||
text: &mut text,
|
||||
data: &mut data,
|
||||
};
|
||||
|
||||
press(&mut edit, 40.0);
|
||||
edit.insert("hello");
|
||||
|
||||
assert_eq!(edit.text.content(), "hello");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn preedit_replaces_the_previous_composition() {
|
||||
let (mut text, mut data) = editor("", EditMode::SingleLine);
|
||||
let mut edit = TextEditCtx {
|
||||
text: &mut text,
|
||||
data: &mut data,
|
||||
};
|
||||
|
||||
press(&mut edit, 0.0);
|
||||
edit.replace(0, "に");
|
||||
edit.replace(1, "日本");
|
||||
|
||||
assert_eq!(edit.text.content(), "日本");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn backspace_respects_utf8_boundaries() {
|
||||
let (mut text, mut data) = editor("aé", EditMode::SingleLine);
|
||||
let mut edit = TextEditCtx {
|
||||
text: &mut text,
|
||||
data: &mut data,
|
||||
};
|
||||
|
||||
press(&mut edit, f32::MAX);
|
||||
edit.backspace(false);
|
||||
|
||||
assert_eq!(edit.text.content(), "a");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn typing_replaces_the_selection() {
|
||||
let (mut text, mut data) = editor("hello", EditMode::SingleLine);
|
||||
let mut edit = TextEditCtx {
|
||||
text: &mut text,
|
||||
data: &mut data,
|
||||
};
|
||||
|
||||
edit.select_all();
|
||||
edit.insert("goodbye");
|
||||
|
||||
assert_eq!(edit.text.content(), "goodbye");
|
||||
}
|
||||
Reference in new issue
Block a user