tva 0.3.3

Tab-separated Values Assistant
Documentation
#[macro_use]
#[path = "common/mod.rs"]
mod common;

use common::TvaCmd;

#[test]
fn md_basic() {
    let expected = "| H1  | H2  |\n| --- | --- |\n| A   | 1   |\n| B   | 2   |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md"])
        .stdin("H1\tH2\nA\t1\nB\t2\n")
        .run();

    // The markdown formatter aligns columns
    assert_eq!(stdout, expected);
}

#[test]
fn md_center() {
    let expected =
        "|  H1   | H2  |\n| :---: | --- |\n|   A   | 1   |\n|   B   | 2   |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md", "--center", "1"])
        .stdin("H1\tH2\nA\t1\nB\t2\n")
        .run();

    assert_eq!(stdout, expected);
}

#[test]
fn md_right() {
    let expected = "| H1  |   H2 |\n| --- | ---: |\n| A   |    1 |\n| B   |    2 |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md", "--right", "2"])
        .stdin("H1\tH2\nA\t1\nB\t2\n")
        .run();

    assert_eq!(stdout, expected);
}

#[test]
fn md_num() {
    // H2 is numeric, so it should be right-aligned
    let expected = "| H1  |   H2 |\n| --- | ---: |\n| A   |    1 |\n| B   |    2 |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md", "--num"])
        .stdin("H1\tH2\nA\t1\nB\t2\n")
        .run();

    assert_eq!(stdout, expected);
}

#[test]
fn md_fmt() {
    // H2 is numeric, should be right-aligned and formatted
    let expected = "| H1  |   H2 |\n| --- | ---: |\n| A   | 1.00 |\n| B   | 2.57 |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md", "--fmt", "--digits", "2"])
        .stdin("H1\tH2\nA\t1\nB\t2.567\n")
        .run();

    assert_eq!(stdout, expected);
}

#[test]
fn md_fmt_non_numeric_in_numeric_column() {
    let expected = "| H1  |   H2 |\n| --- | ---: |\n| A   |  100 |\n| B   |  N/A |\n";

    let (stdout, _) = TvaCmd::new()
        .args(&["to", "md", "--fmt", "--right", "2"])
        .stdin("H1\tH2\nA\t100\nB\tN/A\n")
        .run();

    assert_eq!(stdout, expected);
}