zellij/src/tests/utils.rs
2021-01-06 17:46:50 +00:00

84 lines
2.6 KiB
Rust

use crate::panes::PositionAndSize;
use crate::panes::TerminalPane;
pub fn get_output_frame_snapshots(
output_frames: &[Vec<u8>],
win_size: &PositionAndSize,
) -> Vec<String> {
let mut vte_parser = vte::Parser::new();
let main_pid = 0;
let mut terminal_output = TerminalPane::new(main_pid, *win_size);
let mut snapshots = vec![];
for frame in output_frames.iter() {
for byte in frame.iter() {
vte_parser.advance(&mut terminal_output, *byte);
}
let output_lines = terminal_output.read_buffer_as_lines();
let cursor_coordinates = terminal_output.cursor_coordinates();
let mut snapshot = String::new();
for (line_index, line) in output_lines.iter().enumerate() {
for (character_index, terminal_character) in line.iter().enumerate() {
if let Some((cursor_x, cursor_y)) = cursor_coordinates {
if line_index == cursor_y && character_index == cursor_x {
snapshot.push('█');
continue;
}
}
snapshot.push(terminal_character.character);
}
if line_index != output_lines.len() - 1 {
snapshot.push('\n');
}
}
snapshots.push(snapshot);
}
snapshots
}
pub mod commands {
/// ctrl-g
pub const COMMAND_TOGGLE: [u8; 1] = [7];
/// b
pub const SPLIT_HORIZONTALLY: [u8; 1] = [98];
/// n
pub const SPLIT_VERTICALLY: [u8; 1] = [110];
/// j
pub const RESIZE_DOWN: [u8; 1] = [106];
/// k
pub const RESIZE_UP: [u8; 1] = [107];
/// p
pub const MOVE_FOCUS: [u8; 1] = [112];
/// h
pub const RESIZE_LEFT: [u8; 1] = [104];
/// l
pub const RESIZE_RIGHT: [u8; 1] = [108];
/// z
pub const SPAWN_TERMINAL: [u8; 1] = [122];
/// q
pub const QUIT: [u8; 1] = [113];
/// PgUp
pub const SCROLL_UP: [u8; 4] = [27, 91, 53, 126];
/// PgDn
pub const SCROLL_DOWN: [u8; 4] = [27, 91, 54, 126];
/// x
pub const CLOSE_FOCUSED_PANE: [u8; 1] = [120];
/// e
pub const TOGGLE_ACTIVE_TERMINAL_FULLSCREEN: [u8; 1] = [101];
/// y
pub const MOVE_FOCUS_LEFT: [u8; 1] = [121];
/// u
pub const MOVE_FOCUS_DOWN: [u8; 1] = [117];
/// i
pub const MOVE_FOCUS_UP: [u8; 1] = [105];
/// o
pub const MOVE_FOCUS_RIGHT: [u8; 1] = [111];
/// 1
pub const NEW_TAB: [u8; 1] = [49];
/// 2
pub const SWITCH_PREV_TAB: [u8; 1] = [50];
/// 3
pub const SWITCH_NEXT_TAB: [u8; 1] = [51];
/// 4
pub const CLOSE_TAB: [u8; 1] = [52];
}