Skip to content

Commit

Permalink
test(terminal): added tests for parse_code
Browse files Browse the repository at this point in the history
  • Loading branch information
Lioness100 committed Aug 14, 2022
1 parent d8ec751 commit de869d7
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 2 deletions.
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,6 @@ regex = "1.6.0"
serde = { version = "1.0.143", features = ["derive"] }
syntect = { version = "5.0.0", default_features = false, features = ["parsing", "regex-onig"] }
ureq = { version = "2.5.0", features = ["json"] }

[dev-dependencies]
indoc = "1.0.7"
103 changes: 101 additions & 2 deletions src/terminal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,10 @@ impl Terminal {

let mut stdout = stdout();

let _hide = execute!(stdout, EnterAlternateScreen, Hide, MoveTo(0, 0));
let _raw = enable_raw_mode();
if !cfg!(test) {
let _hide = execute!(stdout, EnterAlternateScreen, Hide, MoveTo(0, 0));
let _raw = enable_raw_mode();
}

Ok(Self {
syntaxes,
Expand Down Expand Up @@ -479,3 +481,100 @@ fn macos_dark_mode_active() -> bool {
Err(_) => true,
}
}

#[cfg(test)]
mod tests {
use super::*;
use indoc::indoc;
use lazy_static::lazy_static;

lazy_static! {
static ref TERMINAL: Terminal = Terminal::new().unwrap();
}

const WIDTH: &usize = &500;

fn parse_code(code: &str) -> Option<Vec<(String, String)>> {
TERMINAL.parse_code(code, TERMINAL.get_highlighter("rs"), WIDTH)
}

#[test]
fn cut_off_wide_code() {
let code = "_".repeat(WIDTH + 1);
let parsed = parse_code(&code).unwrap();

assert_eq!(
parsed[0].0,
"_".repeat(WIDTH - 3 - " 1 | ".len()) + "..."
);
}

#[test]
fn remove_comments() {
let code = indoc! {"
// Should be removed
/// Should be removed
//! Should be removed
/* Should be removed */
let x = 5; // Whole line should be removed
let y = 6;
"};

let parsed = parse_code(code).unwrap();
assert_eq!(parsed.len(), 1);
}

#[test]
fn cut_off_tall_code() {
let code = indoc! {"
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
"};

let parsed = parse_code(code).unwrap();
assert_eq!(parsed.len(), code.lines().count() - 2);
}

#[test]
fn remove_consecutive_duplicate_newlines() {
let code = indoc! {"
Line 1
Line 2
Line 3
"};

let parsed = parse_code(code).unwrap();
assert_eq!(parsed.len(), code.lines().count() - 2);
}

#[test]
fn trim_newlines() {
let code = indoc! {"
Line 1
"};

let parsed = parse_code(code).unwrap();
assert_eq!(parsed.len(), 1);
}
}

0 comments on commit de869d7

Please sign in to comment.