use std::process::Command;
use util::*;

static PROGNAME: &'static str = "./wc";

#[path = "common/util.rs"]
#[macro_use]
mod util;

#[test]
fn test_stdin_default() {
    let mut cmd = Command::new(PROGNAME);
    let result = run_piped_stdin(&mut cmd, get_file_contents("lorem_ipsum.txt"));
    assert_eq!(result.stdout, "  13 109 772\n");
}

#[test]
fn test_stdin_only_bytes() {
    let mut cmd = Command::new(PROGNAME);
    let result = run_piped_stdin(&mut cmd.args(&["-c"]), get_file_contents("lorem_ipsum.txt"));
    assert_eq!(result.stdout, " 772\n");
}

#[test]
fn test_stdin_all_counts() {
    let mut cmd = Command::new(PROGNAME);
    let result = run_piped_stdin(&mut cmd.args(&["-c", "-m", "-l", "-L", "-w"]), get_file_contents("alice_in_wonderland.txt"));
    assert_eq!(result.stdout, "   5  57 302 302  66\n");
}

#[test]
fn test_single_default() {
    let mut cmd = Command::new(PROGNAME);
    let result = run(&mut cmd.arg("moby_dick.txt"));
    assert_eq!(result.stdout, "   18  204 1115 moby_dick.txt\n");
}

#[test]
fn test_single_only_lines() {
    let mut cmd = Command::new(PROGNAME);
    let result = run(&mut cmd.args(&["-l", "moby_dick.txt"]));
    assert_eq!(result.stdout, "   18 moby_dick.txt\n");
}

#[test]
fn test_single_all_counts() 


#[test]
fn test_multiple_default() {
    let mut cmd = Command::new(PROGNAME);
    let result = run(&mut cmd.args(&["lorem_ipsum.txt", "moby_dick.txt", "alice_in_wonderland.txt"]));
    assert_eq!(result.stdout, "   13  109  772 lorem_ipsum.txt\n   18  204 1115 moby_dick.txt\n    5   57  302 alice_in_wonderland.txt\n   36  370 2189 total\n");
}

{
    let mut cmd = Command::new(PROGNAME);
    let result = run(&mut cmd.args(&["-c", "-l", "-L", "-m", "-w", "alice_in_wonderland.txt"]));
    assert_eq!(result.stdout, "   5  57 302 302  66 alice_in_wonderland.txt\n");
}