From 676e3718c312f42e2194d515aa580ddb38f07dae Mon Sep 17 00:00:00 2001 From: "Chirag B. Jadwani" Date: Mon, 29 Feb 2016 11:07:16 +0530 Subject: [PATCH] uniq: add tests --- Makefile | 1 + tests/fixtures/uniq/skip-1-char.expected | 9 ++ tests/fixtures/uniq/skip-2-fields.expected | 2 + .../uniq/skip-3-check-2-chars.expected | 6 ++ .../uniq/skip-3-check-5-chars.expected | 7 ++ tests/fixtures/uniq/skip-5-chars.expected | 5 + tests/fixtures/uniq/skip-chars.txt | 12 +++ tests/fixtures/uniq/skip-fields.txt | 8 ++ .../uniq/sorted-all-repeated-prepend.expected | 22 +++++ .../sorted-all-repeated-separate.expected | 21 ++++ .../uniq/sorted-all-repeated.expected | 16 ++++ tests/fixtures/uniq/sorted-counts.expected | 8 ++ .../fixtures/uniq/sorted-ignore-case.expected | 7 ++ .../uniq/sorted-repeated-only.expected | 6 ++ tests/fixtures/uniq/sorted-simple.expected | 8 ++ .../fixtures/uniq/sorted-unique-only.expected | 2 + tests/fixtures/uniq/sorted.txt | 18 ++++ tests/uniq.rs | 95 +++++++++++++++++++ 18 files changed, 253 insertions(+) create mode 100644 tests/fixtures/uniq/skip-1-char.expected create mode 100644 tests/fixtures/uniq/skip-2-fields.expected create mode 100644 tests/fixtures/uniq/skip-3-check-2-chars.expected create mode 100644 tests/fixtures/uniq/skip-3-check-5-chars.expected create mode 100644 tests/fixtures/uniq/skip-5-chars.expected create mode 100644 tests/fixtures/uniq/skip-chars.txt create mode 100644 tests/fixtures/uniq/skip-fields.txt create mode 100644 tests/fixtures/uniq/sorted-all-repeated-prepend.expected create mode 100644 tests/fixtures/uniq/sorted-all-repeated-separate.expected create mode 100644 tests/fixtures/uniq/sorted-all-repeated.expected create mode 100644 tests/fixtures/uniq/sorted-counts.expected create mode 100644 tests/fixtures/uniq/sorted-ignore-case.expected create mode 100644 tests/fixtures/uniq/sorted-repeated-only.expected create mode 100644 tests/fixtures/uniq/sorted-simple.expected create mode 100644 tests/fixtures/uniq/sorted-unique-only.expected create mode 100644 tests/fixtures/uniq/sorted.txt create mode 100644 tests/uniq.rs diff --git a/Makefile b/Makefile index f418606b6..19bc50449 100644 --- a/Makefile +++ b/Makefile @@ -171,6 +171,7 @@ TEST_PROGS := \ truncate \ tsort \ unexpand \ + uniq \ unlink \ wc diff --git a/tests/fixtures/uniq/skip-1-char.expected b/tests/fixtures/uniq/skip-1-char.expected new file mode 100644 index 000000000..447c37cb3 --- /dev/null +++ b/tests/fixtures/uniq/skip-1-char.expected @@ -0,0 +1,9 @@ +aaaaa 1 +Xbbbb 2 +XXbbb 2 +ccccc 3 +Xdddd 3 +XXddd 3 +XXXdd 1 +eeee +fff diff --git a/tests/fixtures/uniq/skip-2-fields.expected b/tests/fixtures/uniq/skip-2-fields.expected new file mode 100644 index 000000000..8cffc2ebc --- /dev/null +++ b/tests/fixtures/uniq/skip-2-fields.expected @@ -0,0 +1,2 @@ + aaa aa a +aa a diff --git a/tests/fixtures/uniq/skip-3-check-2-chars.expected b/tests/fixtures/uniq/skip-3-check-2-chars.expected new file mode 100644 index 000000000..d2559b58d --- /dev/null +++ b/tests/fixtures/uniq/skip-3-check-2-chars.expected @@ -0,0 +1,6 @@ +aaaaa 1 +Xbbbb 2 +ccccc 3 +Xdddd 3 +eeee +fff diff --git a/tests/fixtures/uniq/skip-3-check-5-chars.expected b/tests/fixtures/uniq/skip-3-check-5-chars.expected new file mode 100644 index 000000000..29edbbd89 --- /dev/null +++ b/tests/fixtures/uniq/skip-3-check-5-chars.expected @@ -0,0 +1,7 @@ +aaaaa 1 +Xbbbb 2 +ccccc 3 +Xdddd 3 +XXXdd 1 +eeee +fff diff --git a/tests/fixtures/uniq/skip-5-chars.expected b/tests/fixtures/uniq/skip-5-chars.expected new file mode 100644 index 000000000..d0515b2c0 --- /dev/null +++ b/tests/fixtures/uniq/skip-5-chars.expected @@ -0,0 +1,5 @@ +aaaaa 1 +Xbbbb 2 +ccccc 3 +XXXdd 1 +eeee diff --git a/tests/fixtures/uniq/skip-chars.txt b/tests/fixtures/uniq/skip-chars.txt new file mode 100644 index 000000000..5f903ccf4 --- /dev/null +++ b/tests/fixtures/uniq/skip-chars.txt @@ -0,0 +1,12 @@ +aaaaa 1 +Xbbbb 2 +XXbbb 2 +ccccc 3 +Xcccc 3 +ccccc 3 +Xdddd 3 +XXddd 3 +XXXdd 1 +XXXdd 1 +eeee +fff diff --git a/tests/fixtures/uniq/skip-fields.txt b/tests/fixtures/uniq/skip-fields.txt new file mode 100644 index 000000000..f84e377a0 --- /dev/null +++ b/tests/fixtures/uniq/skip-fields.txt @@ -0,0 +1,8 @@ + aaa aa a + ZZZ aa a +ZZZ aa a + ZZZ bb a + ZZZ bb a +aa a +a + diff --git a/tests/fixtures/uniq/sorted-all-repeated-prepend.expected b/tests/fixtures/uniq/sorted-all-repeated-prepend.expected new file mode 100644 index 000000000..6aaa660c7 --- /dev/null +++ b/tests/fixtures/uniq/sorted-all-repeated-prepend.expected @@ -0,0 +1,22 @@ + + bbbbb ⅱ + bbbbb ⅱ + + ccccc ⅲ + ccccc ⅲ + ccccc ⅲ + + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + + fffff ⅲ + fffff ⅲ + + ggggg ⅲ + ggggg ⅲ + ggggg ⅲ + + GGGGG ⅲ + GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-all-repeated-separate.expected b/tests/fixtures/uniq/sorted-all-repeated-separate.expected new file mode 100644 index 000000000..93d74ca04 --- /dev/null +++ b/tests/fixtures/uniq/sorted-all-repeated-separate.expected @@ -0,0 +1,21 @@ + bbbbb ⅱ + bbbbb ⅱ + + ccccc ⅲ + ccccc ⅲ + ccccc ⅲ + + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + + fffff ⅲ + fffff ⅲ + + ggggg ⅲ + ggggg ⅲ + ggggg ⅲ + + GGGGG ⅲ + GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-all-repeated.expected b/tests/fixtures/uniq/sorted-all-repeated.expected new file mode 100644 index 000000000..2be1b8a31 --- /dev/null +++ b/tests/fixtures/uniq/sorted-all-repeated.expected @@ -0,0 +1,16 @@ + bbbbb ⅱ + bbbbb ⅱ + ccccc ⅲ + ccccc ⅲ + ccccc ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + fffff ⅲ + fffff ⅲ + ggggg ⅲ + ggggg ⅲ + ggggg ⅲ + GGGGG ⅲ + GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-counts.expected b/tests/fixtures/uniq/sorted-counts.expected new file mode 100644 index 000000000..486ab7c99 --- /dev/null +++ b/tests/fixtures/uniq/sorted-counts.expected @@ -0,0 +1,8 @@ + 1 aaaaa ⅰ + 2 bbbbb ⅱ + 3 ccccc ⅲ + 4 ddddd ⅲ + 1 eeeee ⅲ + 2 fffff ⅲ + 3 ggggg ⅲ + 2 GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-ignore-case.expected b/tests/fixtures/uniq/sorted-ignore-case.expected new file mode 100644 index 000000000..6596aaf02 --- /dev/null +++ b/tests/fixtures/uniq/sorted-ignore-case.expected @@ -0,0 +1,7 @@ + aaaaa ⅰ + bbbbb ⅱ + ccccc ⅲ + ddddd ⅲ + eeeee ⅲ + fffff ⅲ + ggggg ⅲ diff --git a/tests/fixtures/uniq/sorted-repeated-only.expected b/tests/fixtures/uniq/sorted-repeated-only.expected new file mode 100644 index 000000000..101a99740 --- /dev/null +++ b/tests/fixtures/uniq/sorted-repeated-only.expected @@ -0,0 +1,6 @@ + bbbbb ⅱ + ccccc ⅲ + ddddd ⅲ + fffff ⅲ + ggggg ⅲ + GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-simple.expected b/tests/fixtures/uniq/sorted-simple.expected new file mode 100644 index 000000000..b4e79bbb3 --- /dev/null +++ b/tests/fixtures/uniq/sorted-simple.expected @@ -0,0 +1,8 @@ + aaaaa ⅰ + bbbbb ⅱ + ccccc ⅲ + ddddd ⅲ + eeeee ⅲ + fffff ⅲ + ggggg ⅲ + GGGGG ⅲ diff --git a/tests/fixtures/uniq/sorted-unique-only.expected b/tests/fixtures/uniq/sorted-unique-only.expected new file mode 100644 index 000000000..d3ea8a83b --- /dev/null +++ b/tests/fixtures/uniq/sorted-unique-only.expected @@ -0,0 +1,2 @@ + aaaaa ⅰ + eeeee ⅲ diff --git a/tests/fixtures/uniq/sorted.txt b/tests/fixtures/uniq/sorted.txt new file mode 100644 index 000000000..85435eaa6 --- /dev/null +++ b/tests/fixtures/uniq/sorted.txt @@ -0,0 +1,18 @@ + aaaaa ⅰ + bbbbb ⅱ + bbbbb ⅱ + ccccc ⅲ + ccccc ⅲ + ccccc ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + ddddd ⅲ + eeeee ⅲ + fffff ⅲ + fffff ⅲ + ggggg ⅲ + ggggg ⅲ + ggggg ⅲ + GGGGG ⅲ + GGGGG ⅲ diff --git a/tests/uniq.rs b/tests/uniq.rs new file mode 100644 index 000000000..af4f4c93e --- /dev/null +++ b/tests/uniq.rs @@ -0,0 +1,95 @@ +#[macro_use] +mod common; + +use common::util::*; + +static UTIL_NAME: &'static str = "uniq"; + +static INPUT: &'static str = "sorted.txt"; +static SKIP_CHARS: &'static str = "skip-chars.txt"; +static SKIP_FIELDS: &'static str = "skip-fields.txt"; + + +#[test] +fn test_stdin_default() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-simple.expected")); +} + +#[test] +fn test_single_default() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.arg(INPUT).run(); + assert_eq!(result.stdout, at.read("sorted-simple.expected")); +} + +#[test] +fn test_stdin_counts() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-c"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-counts.expected")); +} + +#[test] +fn test_stdin_skip_1_char() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-s1"]).run_piped_stdin(at.read(SKIP_CHARS)); + assert_eq!(result.stdout, at.read("skip-1-char.expected")); +} + +#[test] +fn test_stdin_skip_5_chars() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-s5"]).run_piped_stdin(at.read(SKIP_CHARS)); + assert_eq!(result.stdout, at.read("skip-5-chars.expected")); +} + +#[test] +fn test_stdin_skip_and_check_2_chars() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-s3", "-w2"]).run_piped_stdin(at.read(SKIP_CHARS)); + assert_eq!(result.stdout, at.read("skip-3-check-2-chars.expected")); +} + +#[test] +fn test_stdin_skip_1_field() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-f2"]).run_piped_stdin(at.read(SKIP_FIELDS)); + assert_eq!(result.stdout, at.read("skip-2-fields.expected")); +} + +#[test] +fn test_stdin_all_repeated() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["--all-repeated"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-all-repeated.expected")); +} + +#[test] +fn test_stdin_all_repeated_separate() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["--all-repeated", "separate"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-all-repeated-separate.expected")); +} + +#[test] +fn test_stdin_all_repeated_prepend() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["--all-repeated", "prepend"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-all-repeated-prepend.expected")); +} + +#[test] +fn test_stdin_unique_only() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-u"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-unique-only.expected")); +} + +#[test] +fn test_stdin_repeated_only() { + let (at, mut ucmd) = testing(UTIL_NAME); + let result = ucmd.args(&["-d"]).run_piped_stdin(at.read(INPUT)); + assert_eq!(result.stdout, at.read("sorted-repeated-only.expected")); +}