use assert_cli::Assert;
fn bin() -> Assert {
Assert::cargo_binary("unic-echo")
}
#[test]
fn test_plain_text_input() {
fn run(args: &[&str]) -> Assert {
bin().with_args(args)
}
run(&[])
.stdout()
.is("")
.stdout()
.contains("\n")
.stdout()
.doesnt_contain("\n\n")
.unwrap();
run(&["Hello"])
.stdout()
.is("Hello")
.stdout()
.contains("Hello\n")
.stdout()
.doesnt_contain("\nHello")
.stdout()
.doesnt_contain("Hello\n\n")
.unwrap();
run(&["Hello", "World"])
.stdout()
.is("Hello World")
.stdout()
.contains("Hello World\n")
.stdout()
.doesnt_contain("\nHello")
.stdout()
.doesnt_contain("Hello World\n\n")
.unwrap();
run(&["Hello world!", "سلام به همه!"])
.stdout()
.is("Hello world! سلام به همه!")
.unwrap();
}
#[test]
fn test_no_newline_output() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--no-newline"]).with_args(args)
}
run(&[])
.stdout()
.is("")
.stdout()
.doesnt_contain("\n")
.unwrap();
run(&["Hello"])
.stdout()
.is("Hello")
.stdout()
.doesnt_contain("Hello\n")
.unwrap();
run(&["Hello", "World"])
.stdout()
.is("Hello World")
.stdout()
.doesnt_contain("Hello World\n")
.unwrap();
}
#[test]
fn test_codepoints_input() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--input", "codepoints"]).with_args(args)
}
run(&[]).stdout().is("").unwrap();
run(&[
"48 U+65 U+006c U+0006c U+000000000006f", ])
.stdout()
.is("Hello")
.unwrap();
run(&[
"633 0644 000627 0000000000000645", ])
.stdout()
.is("سلام")
.unwrap();
}
#[test]
fn test_utf8_hex_input() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--input", "utf8-hex"]).with_args(args)
}
run(&[]).stdout().is("").unwrap();
run(&[
"48 65 6c 6c 6f", ])
.stdout()
.is("Hello")
.unwrap();
run(&[
"48 65 6c 6c 6f", "20", "0x57 0x6f 0x72 0x6c 0x64", ])
.stdout()
.is("Hello World")
.unwrap();
run(&[
"48 65 6c 6c 6", ])
.stdout()
.is("Hell\u{6}")
.unwrap();
run(&[
"D8 B3 D9 84 D8 A7 D9 85 0A", ])
.stdout()
.is("سلام")
.stdout()
.contains("سلام\n")
.unwrap();
}
#[test]
fn test_utf16_hex_input() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--input", "utf16-hex"]).with_args(args)
}
run(&[
"0633 0x0644 0627,0645", ])
.stdout()
.is("سلام")
.stdout()
.contains("سلام\n")
.unwrap();
}
#[test]
fn test_codepoints_output() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--output", "codepoints"]).with_args(args)
}
run(&[]).stdout().is("").unwrap();
run(&["Hello"])
.stdout()
.is("U+0048 U+0065 U+006C U+006C U+006F")
.unwrap();
run(&["سلام"])
.stdout()
.is("U+0633 U+0644 U+0627 U+0645")
.unwrap();
run(&["\u{1F1FA}\u{1F1F3}\u{1F1EE}\u{1F1E8}\u{1F49F}"])
.stdout()
.is("U+1F1FA U+1F1F3 U+1F1EE U+1F1E8 U+1F49F")
.unwrap();
}
#[test]
fn test_utf8_hex_output() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--output", "utf8-hex"]).with_args(args)
}
run(&[]).stdout().is("").unwrap();
run(&["Hello"])
.stdout()
.is("0x48 0x65 0x6C 0x6C 0x6F")
.unwrap();
run(&["سلام"])
.stdout()
.is("0xD8 0xB3 0xD9 0x84 0xD8 0xA7 0xD9 0x85")
.unwrap();
run(&["\u{1F49F}"])
.stdout()
.is("0xF0 0x9F 0x92 0x9F")
.unwrap();
}
#[test]
fn test_utf16_hex_output() {
fn run(args: &[&str]) -> Assert {
bin().with_args(&["--output", "utf16-hex"]).with_args(args)
}
run(&[]).stdout().is("").unwrap();
run(&["Hello"])
.stdout()
.is("0x0048 0x0065 0x006C 0x006C 0x006F")
.unwrap();
run(&["سلام"])
.stdout()
.is("0x0633 0x0644 0x0627 0x0645")
.unwrap();
run(&["\u{1F1FA}\u{1F1F3}\u{1F1EE}\u{1F1E8}\u{1F49F}"])
.stdout()
.is("0xD83C 0xDDFA 0xD83C 0xDDF3 0xD83C 0xDDEE 0xD83C 0xDDE8 0xD83D 0xDC9F")
.unwrap();
}
#[test]
fn test_rust_escape_output() {
fn run(args: &[&str]) -> Assert {
bin()
.with_args(&["--output", "rust-escape"])
.with_args(args)
}
run(&[]).stdout().is("\"\"").unwrap();
run(&["Hello"]).stdout().is("\"Hello\"").unwrap();
run(&["hello", "سلام"])
.stdout()
.is("\"hello \\u{633}\\u{644}\\u{627}\\u{645}\"")
.unwrap();
run(&["\u{1f1fa}\u{1f1f3}\u{1f1ee}\u{1f1e8}\u{1f49f}"])
.stdout()
.is("\"\\u{1f1fa}\\u{1f1f3}\\u{1f1ee}\\u{1f1e8}\\u{1f49f}\"")
.unwrap();
}