added tests
This commit is contained in:
parent
9bda408e43
commit
a2bb9ecff5
@ -23,13 +23,18 @@ use crossterm::terminal::terminal;
|
|||||||
use crossterm::Screen;
|
use crossterm::Screen;
|
||||||
|
|
||||||
use crossterm::output::TerminalOutput;
|
use crossterm::output::TerminalOutput;
|
||||||
|
use crossterm::cursor::TerminalCursor;
|
||||||
|
|
||||||
fn main()
|
fn main()
|
||||||
{
|
{
|
||||||
let screen = Screen::default();
|
let screen = Screen::default();
|
||||||
let output = TerminalOutput::new(false);
|
let cursor = TerminalCursor::new(&screen.stdout);
|
||||||
|
|
||||||
let bytes = "test".as_bytes();
|
cursor.goto(5, 5);
|
||||||
let result = output.write_str("test");
|
let (x, y) = cursor.pos();
|
||||||
println!("bytes: {} written: {}", bytes.len(), result.unwrap());
|
|
||||||
|
assert_eq!(x, 5);
|
||||||
|
assert_eq!(y, 5);
|
||||||
|
|
||||||
|
println!("x: {} y: {}", x,y);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
//! Like moving the cursor position;saving and resetting the cursor position; hiding showing and control the blinking of the cursor.
|
//! Like moving the cursor position;saving and resetting the cursor position; hiding showing and control the blinking of the cursor.
|
||||||
|
|
||||||
mod cursor;
|
mod cursor;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
mod test;
|
mod test;
|
||||||
|
|
||||||
mod ansi_cursor;
|
mod ansi_cursor;
|
||||||
|
@ -6,38 +6,41 @@ use modules::cursor::ITerminalCursor;
|
|||||||
use Screen;
|
use Screen;
|
||||||
|
|
||||||
/* ======================== WinApi =========================== */
|
/* ======================== WinApi =========================== */
|
||||||
#[test]
|
#[cfg(windows)]
|
||||||
fn goto_winapi()
|
mod winapi_tests {
|
||||||
{
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn goto_winapi()
|
||||||
|
{
|
||||||
let screen = Screen::default();
|
let screen = Screen::default();
|
||||||
let cursor = WinApiCursor::new();
|
let cursor = WinApiCursor::new();
|
||||||
|
|
||||||
cursor.goto(5,5,&screen.stdout);
|
cursor.goto(5, 5, &screen.stdout);
|
||||||
let (x,y) = cursor.pos(&screen.stdout);
|
let (x, y) = cursor.pos(&screen.stdout);
|
||||||
|
|
||||||
assert_eq!(x, 5);
|
assert_eq!(x, 5);
|
||||||
assert_eq!(y, 5);
|
assert_eq!(y, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn reset_safe_winapi()
|
fn reset_safe_winapi()
|
||||||
{
|
{
|
||||||
let screen = Screen::default();
|
let screen = Screen::default();
|
||||||
let cursor = WinApiCursor::new();
|
let cursor = WinApiCursor::new();
|
||||||
let (x,y) = cursor.pos(&screen.stdout);
|
let (x, y) = cursor.pos(&screen.stdout);
|
||||||
|
|
||||||
cursor.save_position(&screen.stdout);
|
cursor.save_position(&screen.stdout);
|
||||||
cursor.goto(5,5,&screen.stdout);
|
cursor.goto(5, 5, &screen.stdout);
|
||||||
cursor.reset_position(&screen.stdout);
|
cursor.reset_position(&screen.stdout);
|
||||||
|
|
||||||
let (x_saved,y_saved) = cursor.pos(&screen.stdout);
|
let (x_saved, y_saved) = cursor.pos(&screen.stdout);
|
||||||
|
|
||||||
assert_eq!(x, x_saved);
|
assert_eq!(x, x_saved);
|
||||||
assert_eq!(y, y_saved);
|
assert_eq!(y, y_saved);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ======================== ANSI =========================== */
|
/* ======================== ANSI =========================== */
|
||||||
#[test]
|
#[test]
|
||||||
fn reset_safe_ansi()
|
fn reset_safe_ansi()
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
//! This module provides a way to work with an handle to an screen on different platforms.
|
//! This module provides a way to work with an handle to an screen on different platforms.
|
||||||
|
|
||||||
mod output;
|
mod output;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
mod test;
|
mod test;
|
||||||
|
|
||||||
mod ansi_output;
|
mod ansi_output;
|
||||||
|
@ -5,18 +5,33 @@ use modules::output::IStdout;
|
|||||||
|
|
||||||
use Screen;
|
use Screen;
|
||||||
|
|
||||||
/* ======================== WinApi =========================== */
|
#[cfg(windows)]
|
||||||
#[test]
|
mod winapi_tests {
|
||||||
fn write_winapi()
|
|
||||||
{
|
use super::*;
|
||||||
|
/* ======================== WinApi =========================== */
|
||||||
|
#[test]
|
||||||
|
fn write_winapi()
|
||||||
|
{
|
||||||
let screen = Screen::default();
|
let screen = Screen::default();
|
||||||
let output = WinApiOutput::new();
|
let output = WinApiOutput::new();
|
||||||
|
|
||||||
let bytes = "test".as_bytes();
|
let bytes = "test".as_bytes();
|
||||||
let result = output.write(bytes);
|
let result = output.write(bytes);
|
||||||
is_valid_write(result, bytes.len());
|
is_valid_write(result, bytes.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn write_str_winapi()
|
||||||
|
{
|
||||||
|
let screen = Screen::default();
|
||||||
|
let output = WinApiOutput::new();
|
||||||
|
|
||||||
|
let bytes = "test".as_bytes();
|
||||||
|
let result = output.write_str("test");
|
||||||
|
is_valid_write(result, bytes.len());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ======================== ANSI =========================== */
|
/* ======================== ANSI =========================== */
|
||||||
#[test]
|
#[test]
|
||||||
@ -27,10 +42,10 @@ fn write_ansi()
|
|||||||
|
|
||||||
let bytes = "test".as_bytes();
|
let bytes = "test".as_bytes();
|
||||||
let result = output.write(bytes);
|
let result = output.write(bytes);
|
||||||
println!("bytes: {} written: {}", bytes.len(), result.unwrap());
|
|
||||||
is_valid_write(result, bytes.len());
|
is_valid_write(result, bytes.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
fn write_str_ansi()
|
fn write_str_ansi()
|
||||||
{
|
{
|
||||||
let screen = Screen::default();
|
let screen = Screen::default();
|
||||||
@ -41,7 +56,6 @@ fn write_str_ansi()
|
|||||||
is_valid_write(result, bytes.len());
|
is_valid_write(result, bytes.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn is_valid_write(result: ::std::io::Result<usize>, str_length: usize)
|
fn is_valid_write(result: ::std::io::Result<usize>, str_length: usize)
|
||||||
{
|
{
|
||||||
match result {
|
match result {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
//! Module that contains all the actions related to the styling of the terminal. like coloring adding attributes etc.
|
//! Module that contains all the actions related to the styling of the terminal. like coloring adding attributes etc.
|
||||||
|
|
||||||
mod test;
|
|
||||||
pub mod color;
|
pub mod color;
|
||||||
pub mod objectstyle;
|
pub mod objectstyle;
|
||||||
pub mod styledobject;
|
pub mod styledobject;
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
//use modules::style::winapi_color::WinApiColor;
|
|
||||||
//use modules::style::ansi_color::AnsiColor;
|
|
||||||
//
|
|
||||||
//use modules::style::ITerminalColor;
|
|
||||||
//
|
|
||||||
//use Screen;
|
|
||||||
//
|
|
||||||
//* ======================== WinApi =========================== */
|
|
||||||
//#[test]
|
|
||||||
//fn goto_winapi()
|
|
||||||
//{
|
|
||||||
// let screen = Screen::default();
|
|
||||||
// let color = WinApiColor::new();
|
|
||||||
//
|
|
||||||
// assert_eq!(x, 5);
|
|
||||||
// assert_eq!(y, 5);
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//* ======================== ANSI =========================== */
|
|
||||||
//#[test]
|
|
||||||
//fn reset_safe_ansi()
|
|
||||||
//{
|
|
||||||
// if try_enable_ansi() {
|
|
||||||
// let screen = Screen::default();
|
|
||||||
// let cursor = AnsiColor::new();
|
|
||||||
//
|
|
||||||
// assert_eq!(x, x_saved);
|
|
||||||
// assert_eq!(y, y_saved);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//fn try_enable_ansi() -> bool
|
|
||||||
//{
|
|
||||||
// if cfg!(target_os = "windows") {
|
|
||||||
// #[cfg(windows)]
|
|
||||||
// use kernel::windows_kernel::ansi_support::try_enable_ansi_support;
|
|
||||||
//
|
|
||||||
// if !try_enable_ansi_support()
|
|
||||||
// { return false; }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return true;
|
|
||||||
//}
|
|
@ -1,5 +1,8 @@
|
|||||||
//! Module that contains all the actions related to the terminal. like clearing, resizing and scrolling the terminal.
|
//! Module that contains all the actions related to the terminal. like clearing, resizing and scrolling the terminal.
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test;
|
||||||
|
|
||||||
pub mod terminal;
|
pub mod terminal;
|
||||||
|
|
||||||
mod ansi_terminal;
|
mod ansi_terminal;
|
||||||
|
56
src/modules/terminal/test.rs
Normal file
56
src/modules/terminal/test.rs
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
use modules::terminal::winapi_terminal::WinApiTerminal;
|
||||||
|
use modules::terminal::ansi_terminal::AnsiTerminal;
|
||||||
|
|
||||||
|
use modules::terminal::ITerminal;
|
||||||
|
|
||||||
|
use Screen;
|
||||||
|
|
||||||
|
/* ======================== WinApi =========================== */
|
||||||
|
#[cfg(windows)]
|
||||||
|
mod winapi_tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn resize_winapi()
|
||||||
|
{
|
||||||
|
let screen = Screen::default();
|
||||||
|
let terminal = WinApiTerminal::new();
|
||||||
|
|
||||||
|
terminal.set_size(10, 10, &screen.stdout);
|
||||||
|
|
||||||
|
let (x, y) = terminal.terminal_size(&screen.stdout);
|
||||||
|
|
||||||
|
assert_eq!(x, 10);
|
||||||
|
assert_eq!(y, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ======================== ANSI =========================== */
|
||||||
|
#[test]
|
||||||
|
fn resize_ansi()
|
||||||
|
{
|
||||||
|
if try_enable_ansi() {
|
||||||
|
let screen = Screen::default();
|
||||||
|
let terminal = WinApiTerminal::new();
|
||||||
|
|
||||||
|
terminal.set_size(10,10, &screen.stdout);
|
||||||
|
|
||||||
|
let (x, y) = terminal.terminal_size(&screen.stdout);
|
||||||
|
|
||||||
|
assert_eq!(x, 10);
|
||||||
|
assert_eq!(y, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn try_enable_ansi() -> bool
|
||||||
|
{
|
||||||
|
if cfg!(target_os = "windows") {
|
||||||
|
#[cfg(windows)]
|
||||||
|
use kernel::windows_kernel::ansi_support::try_enable_ansi_support;
|
||||||
|
|
||||||
|
if !try_enable_ansi_support()
|
||||||
|
{ return false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user