#![allow(unused_imports)]
use revue::layout::Rect;
use revue::render::Buffer;
use revue::widget::traits::{RenderContext, View};
use revue::widget::{
rich_text_editor, Block, BlockType, EditorViewMode, FormattedSpan, RichTextEditor, TextFormat,
ToolbarAction,
};
#[test]
fn test_cursor_move_right() {
let mut editor = RichTextEditor::new().content("hello");
assert_eq!(editor.cursor_position(), (0, 0));
editor.move_right();
assert_eq!(editor.cursor_position(), (0, 1));
editor.move_right();
editor.move_right();
assert_eq!(editor.cursor_position(), (0, 3));
}
#[test]
fn test_cursor_move_left() {
let mut editor = RichTextEditor::new().content("hello");
editor.set_cursor(0, 3);
editor.move_left();
assert_eq!(editor.cursor_position(), (0, 2));
editor.move_left();
editor.move_left();
editor.move_left();
assert_eq!(editor.cursor_position(), (0, 0));
}
#[test]
fn test_cursor_move_down() {
let mut editor = RichTextEditor::new().content("line1\nline2\nline3");
editor.move_down();
assert_eq!(editor.cursor_position(), (1, 0));
editor.move_down();
assert_eq!(editor.cursor_position(), (2, 0));
editor.move_down();
assert_eq!(editor.cursor_position(), (2, 0));
}
#[test]
fn test_cursor_move_up() {
let mut editor = RichTextEditor::new().content("line1\nline2\nline3");
editor.set_cursor(2, 0);
editor.move_up();
assert_eq!(editor.cursor_position(), (1, 0));
editor.move_up();
assert_eq!(editor.cursor_position(), (0, 0));
editor.move_up();
assert_eq!(editor.cursor_position(), (0, 0));
}
#[test]
fn test_cursor_move_home_end() {
let mut editor = RichTextEditor::new().content("hello");
editor.set_cursor(0, 3);
editor.move_home();
assert_eq!(editor.cursor_position(), (0, 0));
editor.move_end();
assert_eq!(editor.cursor_position(), (0, 5));
}
#[test]
fn test_cursor_document_navigation() {
let mut editor = RichTextEditor::new().content("line1\nline2\nline3\nline4");
editor.move_document_end();
assert_eq!(editor.cursor_position(), (3, 5));
editor.move_document_start();
assert_eq!(editor.cursor_position(), (0, 0));
}
#[test]
fn test_cursor_wrap_between_blocks() {
let mut editor = RichTextEditor::new().content("ab\ncd");
editor.set_cursor(0, 2);
editor.move_right();
assert_eq!(editor.cursor_position(), (1, 0));
editor.move_left();
assert_eq!(editor.cursor_position(), (0, 2));
}