diff --git a/Makefile b/Makefile index 9e8d1a4d5..1fcf8a092 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,7 @@ TEST_PROGS := \ cat \ mkdir \ seq \ + tr \ truncate \ TEST ?= $(TEST_PROGS) diff --git a/tr/test.rs b/tr/test.rs new file mode 100644 index 000000000..b6fc1456d --- /dev/null +++ b/tr/test.rs @@ -0,0 +1,33 @@ +use std::io::process::Command; + +fn run(input: &str, set1: &str, set2: &str) -> Vec { + let mut process = Command::new("build/tr").arg(set1).arg(set2).spawn().unwrap(); + + process.stdin.take_unwrap().write_str(input).unwrap(); + + let po = match process.wait_with_output() { + Ok(p) => p, + Err(err) => fail!("{}", err), + }; + po.output +} + +#[test] +fn test_toupper() { + let out = run("!abcd!", "a-z", "A-Z"); + assert_eq!(out.as_slice(), bytes!("!ABCD!")); +} + +#[test] +fn test_small_set2() { + let out = run("@0123456789", "0-9", "X"); + assert_eq!(out.as_slice(), bytes!("@XXXXXXXXXX")); +} + +#[test] +fn test_unicode() { + let out = run("(,°□°), ┬─┬", ", ┬─┬", "╯︵┻━┻"); + assert_eq!(out.as_slice(), bytes!("(╯°□°)╯︵┻━┻")); +} + +