From b0097d0565d97f136fa77843dfff24fbbc8074b1 Mon Sep 17 00:00:00 2001 From: Knight Date: Sat, 6 Aug 2016 11:46:39 +0800 Subject: [PATCH] base32: add tests --- tests/test_base32.rs | 92 ++++++++++++++++++++++++++++++++++++++++++++ tests/tests.rs | 1 + 2 files changed, 93 insertions(+) create mode 100644 tests/test_base32.rs diff --git a/tests/test_base32.rs b/tests/test_base32.rs new file mode 100644 index 000000000..51abe7e97 --- /dev/null +++ b/tests/test_base32.rs @@ -0,0 +1,92 @@ +// This file is part of the uutils coreutils package. +// +// (c) Jian Zeng +// +// For the full copyright and license information, please view the LICENSE file +// that was distributed with this source code. +// + +use common::util::*; + +static UTIL_NAME: &'static str = "base32"; +fn new_ucmd() -> UCommand { + TestScenario::new(UTIL_NAME).ucmd() +} + +#[test] +fn test_encode() { + let input = "Hello, World!"; + new_ucmd() + .pipe_in(input) + .succeeds() + .stdout_only("JBSWY3DPFQQFO33SNRSCC===\n"); +} + +#[test] +fn test_decode() { + for decode_param in vec!["-d", "--decode"] { + let input = "JBSWY3DPFQQFO33SNRSCC===\n"; + new_ucmd() + .arg(decode_param) + .pipe_in(input) + .succeeds() + .stdout_only("Hello, World!"); + } +} + +#[test] +fn test_garbage() { + let input = "aGVsbG8sIHdvcmxkIQ==\0"; + new_ucmd() + .arg("-d") + .pipe_in(input) + .fails() + .stderr_only("base32: error: invalid input\n"); +} + +#[test] +fn test_ignore_garbage() { + for ignore_garbage_param in vec!["-i", "--ignore-garbage"] { + let input = "JBSWY\x013DPFQ\x02QFO33SNRSCC===\n"; + new_ucmd() + .arg("-d") + .arg(ignore_garbage_param) + .pipe_in(input) + .succeeds() + .stdout_only("Hello, World!"); + } +} + +#[test] +fn test_wrap() { + for wrap_param in vec!["-w", "--wrap"] { + let input = "The quick brown fox jumps over the lazy dog."; + new_ucmd() + .arg(wrap_param) + .arg("20") + .pipe_in(input) + .succeeds() + .stdout_only("KRUGKIDROVUWG2ZAMJZG\n653OEBTG66BANJ2W24DT\nEBXXMZLSEB2GQZJANRQX\nU6JAMRXWOLQ=\n"); + } +} + +#[test] +fn test_wrap_no_arg() { + for wrap_param in vec!["-w", "--wrap"] { + new_ucmd() + .arg(wrap_param) + .fails() + .stderr_only(format!("base32: Argument to option '{}' missing.\nTry 'base32 --help' for more information.\n", + if wrap_param == "-w" { "w" } else { "wrap" })); + } +} + +#[test] +fn test_wrap_bad_arg() { + for wrap_param in vec!["-w", "--wrap"] { + new_ucmd() + .arg(wrap_param).arg("b") + .fails() + .stderr_only("base32: error: invalid wrap size: ‘b’: invalid digit found in string\n"); + } +} diff --git a/tests/tests.rs b/tests/tests.rs index 40059f299..b9145f8a0 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -48,6 +48,7 @@ macro_rules! generic { }; } generic! { + "base32", test_base32; "base64", test_base64; "basename", test_basename; "cat", test_cat;