Skip to content

Commit

Permalink
InMemoryTerm: add tests specifically for InMemoryTerm
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-laplante committed Feb 16, 2022
1 parent 3930c8b commit d11477e
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions src/in_memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ impl InMemoryTerm {
rows.reverse();
rows.join("\n")
}

pub fn cursor_position(&self) -> (u16, u16) {
self.state.lock().unwrap().parser.screen().cursor_position()
}
}

impl TermLike for InMemoryTerm {
Expand Down Expand Up @@ -139,6 +143,70 @@ mod test {
use super::*;
use crate::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressFinish, ProgressStyle};

#[test]
fn line_wrapping() {
let in_mem = InMemoryTerm::new(10, 5);
assert_eq!(in_mem.cursor_position(), (0, 0));

in_mem.write_str("ABCDE").unwrap();
assert_eq!(in_mem.contents(), "ABCDE");
assert_eq!(in_mem.cursor_position(), (0, 5));

// Should wrap onto next line
in_mem.write_str("FG").unwrap();
assert_eq!(in_mem.contents(), "ABCDE\nFG");
assert_eq!(in_mem.cursor_position(), (1, 2));

in_mem.write_str("HIJ").unwrap();
assert_eq!(in_mem.contents(), "ABCDE\nFGHIJ");
assert_eq!(in_mem.cursor_position(), (1, 5));
}

#[test]
fn write_line() {
let in_mem = InMemoryTerm::new(10, 5);
assert_eq!(in_mem.cursor_position(), (0, 0));

in_mem.write_line("A").unwrap();
assert_eq!(in_mem.contents(), "A");
assert_eq!(in_mem.cursor_position(), (1, 0));

in_mem.write_line("B").unwrap();
assert_eq!(in_mem.contents(), "A\nB");
assert_eq!(in_mem.cursor_position(), (2, 0));

in_mem.write_line("Longer than cols").unwrap();
assert_eq!(in_mem.contents(), "A\nB\nLonge\nr tha\nn col\ns");
assert_eq!(in_mem.cursor_position(), (6, 0));
}

#[test]
fn basic_functionality() {
let in_mem = InMemoryTerm::new(10, 80);

in_mem.write_line("This is a test line").unwrap();
assert_eq!(in_mem.contents(), "This is a test line");

in_mem.write_line("And another line!").unwrap();
assert_eq!(in_mem.contents(), "This is a test line\nAnd another line!");

in_mem.move_cursor_up(1).unwrap();
in_mem.write_str("TEST").unwrap();

assert_eq!(in_mem.contents(), "This is a test line\nTESTanother line!");
}

#[test]
fn newlines() {
let in_mem = InMemoryTerm::new(10, 10);
in_mem.write_line("LINE ONE").unwrap();
in_mem.write_line("LINE TWO").unwrap();
in_mem.write_line("").unwrap();
in_mem.write_line("LINE FOUR").unwrap();

assert_eq!(in_mem.contents(), "LINE ONE\nLINE TWO\n\nLINE FOUR");
}

#[test]
fn basic_progress_bar() {
let in_mem = InMemoryTerm::new(10, 80);
Expand Down

0 comments on commit d11477e

Please sign in to comment.