2018-09-22 06:22:25 +10:00
|
|
|
use modules::terminal::ansi_terminal::AnsiTerminal;
|
|
|
|
|
|
|
|
use modules::terminal::ITerminal;
|
|
|
|
|
|
|
|
use Screen;
|
|
|
|
|
|
|
|
/* ======================== WinApi =========================== */
|
|
|
|
#[cfg(windows)]
|
|
|
|
mod winapi_tests {
|
|
|
|
use super::*;
|
2018-11-22 03:48:22 +11:00
|
|
|
use modules::terminal::winapi_terminal::WinApiTerminal;
|
2018-09-22 06:22:25 +10:00
|
|
|
|
|
|
|
#[test]
|
2018-11-22 03:48:22 +11:00
|
|
|
fn resize_winapi() {
|
2018-09-22 06:22:25 +10:00
|
|
|
let screen = Screen::default();
|
2018-11-15 02:53:27 +11:00
|
|
|
let stdout = Some(&screen.stdout);
|
2018-09-22 06:22:25 +10:00
|
|
|
let terminal = WinApiTerminal::new();
|
|
|
|
|
2019-01-01 05:55:48 +11:00
|
|
|
terminal.set_size(20, 10, &stdout);
|
2018-09-22 06:22:25 +10:00
|
|
|
|
2018-11-15 02:53:27 +11:00
|
|
|
let (x, y) = terminal.terminal_size(&stdout);
|
2018-09-22 06:22:25 +10:00
|
|
|
|
2019-01-01 05:55:48 +11:00
|
|
|
assert_eq!(x, 20);
|
2018-09-22 06:22:25 +10:00
|
|
|
assert_eq!(y, 10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ======================== ANSI =========================== */
|
|
|
|
#[test]
|
2018-11-22 03:48:22 +11:00
|
|
|
fn resize_ansi() {
|
2018-09-23 06:42:23 +10:00
|
|
|
use std::{thread, time};
|
2018-09-22 06:22:25 +10:00
|
|
|
if try_enable_ansi() {
|
|
|
|
let screen = Screen::default();
|
2018-11-15 02:53:27 +11:00
|
|
|
let stdout = Some(&screen.stdout);
|
2018-09-23 06:42:23 +10:00
|
|
|
let terminal = AnsiTerminal::new();
|
|
|
|
|
2018-11-22 03:48:22 +11:00
|
|
|
terminal.set_size(50, 50, &stdout);
|
2018-09-22 06:22:25 +10:00
|
|
|
|
2018-09-23 06:42:23 +10:00
|
|
|
// see issue: https://github.com/eminence/terminal-size/issues/11
|
|
|
|
thread::sleep(time::Duration::from_millis(30));
|
2018-09-22 06:22:25 +10:00
|
|
|
|
2018-11-15 02:53:27 +11:00
|
|
|
let (x, y) = terminal.terminal_size(&stdout);
|
2018-09-22 06:22:25 +10:00
|
|
|
|
2018-09-23 06:42:23 +10:00
|
|
|
assert_eq!(x, 50);
|
|
|
|
assert_eq!(y, 50);
|
2018-09-22 06:22:25 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-22 03:48:22 +11:00
|
|
|
fn try_enable_ansi() -> bool {
|
2018-09-23 06:42:23 +10:00
|
|
|
#[cfg(windows)]
|
2018-11-22 03:48:22 +11:00
|
|
|
{
|
|
|
|
if cfg!(target_os = "windows") {
|
|
|
|
use kernel::windows_kernel::ansi_support::try_enable_ansi_support;
|
2018-09-23 06:42:23 +10:00
|
|
|
|
2018-11-22 03:48:22 +11:00
|
|
|
if !try_enable_ansi_support() {
|
|
|
|
return false;
|
2018-09-23 06:42:23 +10:00
|
|
|
}
|
|
|
|
}
|
2018-11-22 03:48:22 +11:00
|
|
|
}
|
2018-09-22 06:22:25 +10:00
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|