use super::*;
use crate::core::FocusState;
#[test]
fn embedded_input_remains_editable_and_keeps_undo() {
let mut field = input("ls").embedded();
assert!(field.plain);
assert!(!field.read_only);
assert!(!field.compact);
field.insert(" -l");
assert_eq!(field.text(), "ls -l");
field.undo();
assert_eq!(field.text(), "ls");
}
fn input(text: &str) -> TextInput {
let mut input = TextInput::new(FocusState::default().new_handle());
input.set_text(text);
input
}
#[test]
fn inserting_replaces_the_selection() {
let mut field = input("hola mundo");
field.move_word(false, true);
field.insert("aura");
assert_eq!(field.text(), "hola aura");
}
#[test]
fn backspace_respects_multibyte_characters() {
let mut field = input("añ");
field.backspace(false);
assert_eq!(field.text(), "a");
}
#[test]
fn word_deletion_and_undo() {
let mut field = input("fn main_loop");
field.backspace(true);
assert_eq!(field.text(), "fn ");
field.undo();
assert_eq!(field.text(), "fn main_loop");
field.redo();
assert_eq!(field.text(), "fn ");
}
#[test]
fn newlines_are_not_inserted() {
let mut field = input("");
field.insert("uno\ndos");
assert_eq!(field.text(), "unodos");
}
#[test]
fn double_click_selects_a_word() {
let mut field = input("abrir archivo");
field.click(8, false, 2);
assert_eq!(field.selected_text(), "archivo");
}
#[test]
fn un_campo_enmascarado_no_entrega_su_seleccion() {
let mut entities = crate::core::EntityMap::new();
let mut field = TextInput::new(entities.focus.new_handle());
field.set_text("sk-secreta");
field.select_all();
assert_eq!(field.selected_text(), "sk-secreta");
field.set_masked(true);
assert_eq!(field.selected_text(), "", "no se puede copiar un secreto");
assert_eq!(field.text(), "sk-secreta", "el valor real sigue disponible para quien lo lee");
}
#[test]
fn select_range_respeta_los_limites_de_caracter() {
let mut input = input("año.txt");
input.select_range(0..4);
assert_eq!(input.selection(), 0..4, "«año» ocupa 4 bytes");
input.select_range(0..2);
assert_eq!(input.selection(), 0..1, "a mitad de «ñ» retrocede al límite");
input.select_range(3..99);
assert_eq!(input.selection(), 3..input.text().len());
}