pub use core::{terminal, Terminal};
pub use types::{CursorStyle, TermCell, TermLine, TerminalAction};
mod ansi;
mod core;
#[cfg(test)]
mod tests {
#![allow(unused_imports)]
use super::*;
use crate::event::{Key, KeyEvent};
use crate::layout::Rect;
use crate::render::Buffer;
use crate::style::Color;
use crate::widget::traits::RenderContext;
#[test]
fn test_terminal_new() {
let _term = Terminal::new(80, 24);
}
#[test]
fn test_terminal_write() {
let mut term = Terminal::new(80, 24);
term.write("Hello, World!");
}
#[test]
fn test_terminal_writeln() {
let mut term = Terminal::new(80, 24);
term.writeln("Line 1");
term.writeln("Line 2");
}
#[test]
fn test_terminal_ansi_colors() {
let mut term = Terminal::new(80, 24);
term.write("\x1b[31mRed\x1b[0m Normal");
}
#[test]
fn test_terminal_scroll() {
let mut term = Terminal::new(80, 5);
for i in 0..10 {
term.writeln(&format!("Line {}", i));
}
term.scroll_up(3);
term.scroll_down(2);
term.scroll_to_bottom();
}
#[test]
fn test_terminal_clear() {
let mut term = Terminal::new(80, 24);
term.writeln("Some text");
term.clear();
}
#[test]
fn test_terminal_input() {
let mut term = Terminal::new(80, 24);
term.handle_key(KeyEvent::new(Key::Char('h')));
term.handle_key(KeyEvent::new(Key::Char('i')));
assert_eq!(term.get_input(), "hi");
let action = term.handle_key(KeyEvent::new(Key::Enter));
assert_eq!(action, Some(TerminalAction::Submit("hi".to_string())));
assert_eq!(term.get_input(), "");
}
#[test]
fn test_terminal_history() {
let mut term = Terminal::new(80, 24);
term.handle_key(KeyEvent::new(Key::Char('a')));
term.handle_key(KeyEvent::new(Key::Enter));
term.handle_key(KeyEvent::new(Key::Char('b')));
term.handle_key(KeyEvent::new(Key::Enter));
term.handle_key(KeyEvent::new(Key::Up));
assert_eq!(term.get_input(), "b");
term.handle_key(KeyEvent::new(Key::Up));
assert_eq!(term.get_input(), "a");
}
#[test]
fn test_terminal_render() {
}
#[test]
fn test_terminal_256_color() {
let mut term = Terminal::new(80, 24);
term.write("\x1b[38;5;196mRed256\x1b[0m");
}
#[test]
fn test_terminal_rgb_color() {
let mut term = Terminal::new(80, 24);
term.write("\x1b[38;2;255;128;64mOrange\x1b[0m");
}
#[test]
fn test_terminal_presets() {
let _shell = Terminal::shell(80, 24);
let _log = Terminal::log_viewer(80, 24);
}
#[test]
fn test_terminal_helper() {
let _term = super::terminal(120, 40);
}
}
mod types;