From 5878d9904e11722295a5c627ea1857b120149170 Mon Sep 17 00:00:00 2001 From: Joseph Crail Date: Thu, 7 May 2015 21:14:31 -0400 Subject: [PATCH] Add tests for fold. --- Makefile | 1 + test/fixtures/fold/lorem_ipsum.txt | 1 + .../fold/lorem_ipsum_40_column_hard.expected | 20 +++++++ .../fold/lorem_ipsum_40_column_word.expected | 21 ++++++++ .../fold/lorem_ipsum_80_column.expected | 10 ++++ test/fold.rs | 53 +++++++++++++++++++ 6 files changed, 106 insertions(+) create mode 100644 test/fixtures/fold/lorem_ipsum.txt create mode 100644 test/fixtures/fold/lorem_ipsum_40_column_hard.expected create mode 100644 test/fixtures/fold/lorem_ipsum_40_column_word.expected create mode 100644 test/fixtures/fold/lorem_ipsum_80_column.expected create mode 100644 test/fold.rs diff --git a/Makefile b/Makefile index 174ae078e..8f8e68a9b 100644 --- a/Makefile +++ b/Makefile @@ -162,6 +162,7 @@ TEST_PROGS := \ cp \ env \ factor \ + fold \ mkdir \ mv \ nl \ diff --git a/test/fixtures/fold/lorem_ipsum.txt b/test/fixtures/fold/lorem_ipsum.txt new file mode 100644 index 000000000..429fe2ef1 --- /dev/null +++ b/test/fixtures/fold/lorem_ipsum.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc interdum suscipit sem vel ornare. Proin euismod, justo sed mollis dictum, eros urna ultricies augue, eu pharetra mi ex id ante. Duis convallis porttitor aliquam. Nunc vitae tincidunt ex. Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel velit dui. Etiam fringilla, dolor quis tempor vehicula, lacus turpis bibendum velit, et pellentesque elit odio a magna. Cras vulputate tortor non libero vehicula euismod. Aliquam tincidunt nisl eget enim cursus, viverra sagittis magna commodo. Cras rhoncus egestas leo nec blandit. Suspendisse potenti. Etiam ullamcorper leo vel lacus vestibulum, cursus semper eros efficitur. In hac habitasse platea dictumst. Phasellus scelerisque vehicula fringilla. diff --git a/test/fixtures/fold/lorem_ipsum_40_column_hard.expected b/test/fixtures/fold/lorem_ipsum_40_column_hard.expected new file mode 100644 index 000000000..dbc6095c1 --- /dev/null +++ b/test/fixtures/fold/lorem_ipsum_40_column_hard.expected @@ -0,0 +1,20 @@ +Lorem ipsum dolor sit amet, consectetur +adipiscing elit. Nunc interdum suscipit +sem vel ornare. Proin euismod, justo sed + mollis dictum, eros urna ultricies augu +e, eu pharetra mi ex id ante. Duis conva +llis porttitor aliquam. Nunc vitae tinci +dunt ex. Suspendisse iaculis ligula ac d +iam consectetur lacinia. Donec vel velit + dui. Etiam fringilla, dolor quis tempor + vehicula, lacus turpis bibendum velit, +et pellentesque elit odio a magna. Cras +vulputate tortor non libero vehicula eui +smod. Aliquam tincidunt nisl eget enim c +ursus, viverra sagittis magna commodo. C +ras rhoncus egestas leo nec blandit. Sus +pendisse potenti. Etiam ullamcorper leo +vel lacus vestibulum, cursus semper eros + efficitur. In hac habitasse platea dict +umst. Phasellus scelerisque vehicula fri +ngilla. diff --git a/test/fixtures/fold/lorem_ipsum_40_column_word.expected b/test/fixtures/fold/lorem_ipsum_40_column_word.expected new file mode 100644 index 000000000..a855134db --- /dev/null +++ b/test/fixtures/fold/lorem_ipsum_40_column_word.expected @@ -0,0 +1,21 @@ +Lorem ipsum dolor sit amet, consectetur +adipiscing elit. Nunc interdum suscipit +sem vel ornare. Proin euismod, justo +sed mollis dictum, eros urna ultricies +augue, eu pharetra mi ex id ante. Duis +convallis porttitor aliquam. Nunc vitae +tincidunt ex. Suspendisse iaculis +ligula ac diam consectetur lacinia. +Donec vel velit dui. Etiam fringilla, +dolor quis tempor vehicula, lacus +turpis bibendum velit, et pellentesque +elit odio a magna. Cras vulputate +tortor non libero vehicula euismod. +Aliquam tincidunt nisl eget enim +cursus, viverra sagittis magna commodo. +Cras rhoncus egestas leo nec blandit. +Suspendisse potenti. Etiam ullamcorper +leo vel lacus vestibulum, cursus semper +eros efficitur. In hac habitasse platea +dictumst. Phasellus scelerisque +vehicula fringilla. diff --git a/test/fixtures/fold/lorem_ipsum_80_column.expected b/test/fixtures/fold/lorem_ipsum_80_column.expected new file mode 100644 index 000000000..3964cbf1a --- /dev/null +++ b/test/fixtures/fold/lorem_ipsum_80_column.expected @@ -0,0 +1,10 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc interdum suscipit +sem vel ornare. Proin euismod, justo sed mollis dictum, eros urna ultricies augu +e, eu pharetra mi ex id ante. Duis convallis porttitor aliquam. Nunc vitae tinci +dunt ex. Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel velit + dui. Etiam fringilla, dolor quis tempor vehicula, lacus turpis bibendum velit, +et pellentesque elit odio a magna. Cras vulputate tortor non libero vehicula eui +smod. Aliquam tincidunt nisl eget enim cursus, viverra sagittis magna commodo. C +ras rhoncus egestas leo nec blandit. Suspendisse potenti. Etiam ullamcorper leo +vel lacus vestibulum, cursus semper eros efficitur. In hac habitasse platea dict +umst. Phasellus scelerisque vehicula fringilla. diff --git a/test/fold.rs b/test/fold.rs new file mode 100644 index 000000000..ecae80303 --- /dev/null +++ b/test/fold.rs @@ -0,0 +1,53 @@ +use std::fs::File; +use std::io::Read; +use std::path::Path; +use std::process::Command; + +static PROGNAME: &'static str = "./fold"; + +#[test] +fn test_default_80_column_wrap() { + let po = Command::new(PROGNAME) + .arg("lorem_ipsum.txt") + .output() + .unwrap_or_else(|err| panic!("{}", err)); + + fold_helper(po.stdout, "lorem_ipsum_80_column.expected"); +} + +#[test] +fn test_40_column_hard_cutoff() { + let po = Command::new(PROGNAME) + .arg("-w") + .arg("40") + .arg("lorem_ipsum.txt") + .output() + .unwrap_or_else(|err| panic!("{}", err)); + + fold_helper(po.stdout, "lorem_ipsum_40_column_hard.expected"); +} + +#[test] +fn test_40_column_word_boundary() { + let po = Command::new(PROGNAME) + .arg("-s") + .arg("-w") + .arg("40") + .arg("lorem_ipsum.txt") + .output() + .unwrap_or_else(|err| panic!("{}", err)); + + fold_helper(po.stdout, "lorem_ipsum_40_column_word.expected"); +} + +fn fold_helper(output: Vec, filename: &str) { + let mut f = File::open(Path::new(filename)).unwrap_or_else(|err| { + panic!("{}", err) + }); + let mut expected = vec!(); + match f.read_to_end(&mut expected) { + Ok(_) => {}, + Err(err) => panic!("{}", err) + } + assert_eq!(String::from_utf8(output).unwrap(), String::from_utf8(expected).unwrap()); +}