// Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. 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); }