use crate::workdir::Workdir;
#[test]
fn to_json() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""]];
let wrk = Workdir::new("to_json");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("json").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "[
{
\"h1\": \"a\",
\"h2\": \"\"
}
]";
assert_eq!(got, expected);
}
#[test]
fn to_json_nulls() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""]];
let wrk = Workdir::new("to_json_nulls");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("json").arg("--nulls").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "[
{
\"h1\": \"a\",
\"h2\": null
}
]";
assert_eq!(got, expected);
}
#[test]
fn to_json_omit() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""], svec!["c", "d"]];
let wrk = Workdir::new("to_json_omit");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("json").arg("--omit").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "[
{
\"h1\": \"a\"
},
{
\"h1\": \"c\",
\"h2\": \"d\"
}
]";
assert_eq!(got, expected);
}
#[test]
fn to_ndjson() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""], svec!["c", "d"]];
let wrk = Workdir::new("to_ndjson");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("ndjson").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "{\"h1\":\"a\",\"h2\":\"\"}\n{\"h1\":\"c\",\"h2\":\"d\"}";
assert_eq!(got, expected);
}
#[test]
fn to_ndjson_nulls() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""], svec!["c", "d"]];
let wrk = Workdir::new("to_ndjson_nulls");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("ndjson").arg("--nulls").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "{\"h1\":\"a\",\"h2\":null}\n{\"h1\":\"c\",\"h2\":\"d\"}";
assert_eq!(got, expected);
}
#[test]
fn to_ndjson_omit() {
let rows1 = vec![svec!["h1", "h2"], svec!["a", ""], svec!["c", "d"]];
let wrk = Workdir::new("to_ndjson_omit");
wrk.create("in1.csv", rows1);
let mut cmd = wrk.command("to");
cmd.arg("ndjson").arg("--omit").arg("in1.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "{\"h1\":\"a\"}\n{\"h1\":\"c\",\"h2\":\"d\"}";
assert_eq!(got, expected);
}
#[test]
fn to_html() {
let wrk = Workdir::new("to_html");
let rows = vec![
svec!["name", "age"],
svec!["John", "12"],
svec!["Lucy", "15"],
];
wrk.create("in.csv", rows);
let mut cmd = wrk.command("to");
cmd.arg("html").arg("in.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "<table>
<thead>
<tr>
<th>name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>12</td>
</tr>
<tr>
<td>Lucy</td>
<td>15</td>
</tr>
</tbody>
</table>";
assert_eq!(got, expected);
}
#[test]
fn to_md() {
let wrk = Workdir::new("to_md");
let rows = vec![
svec!["name", "age"],
svec!["John", "12"],
svec!["Lucy", "15"],
];
wrk.create("in.csv", rows);
let mut cmd = wrk.command("to");
cmd.arg("md").arg("in.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "| name | age |
| ---- | --- |
| John | 12 |
| Lucy | 15 |";
assert_eq!(got, expected);
}
#[test]
fn to_latex() {
let wrk = Workdir::new("to_latex");
let rows = vec![
svec!["name", "age", "size", "empty_col"],
svec!["John", "12", "1.35", ""],
svec!["Lucy", "15", "1.6", ""],
];
wrk.create("in.csv", rows);
let mut cmd = wrk.command("to");
cmd.arg("latex")
.arg("--caption")
.arg("Un tableau mignon")
.arg("in.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "\\begin{table}[h]
\\centering
\\caption{Un tableau mignon}
\\begin{tabular}{|c|r|r|c|}
\\hline
\\textbf{name} & \\textbf{age} & \\textbf{size} & \\textbf{empty\\_col} \\\\
\\hline
John & 12 & 1.35 & \\\\
Lucy & 15 & 1.6 & \\\\
\\hline
\\end{tabular}
\\end{table}";
assert_eq!(got, expected);
}
#[test]
fn to_latex_no_caption() {
let wrk = Workdir::new("to_latex");
let rows = vec![
svec!["name", "age"],
svec!["John", "12"],
svec!["Lucy", "15"],
];
wrk.create("in.csv", rows);
let mut cmd = wrk.command("to");
cmd.arg("latex").arg("in.csv");
let got: String = wrk.stdout(&mut cmd);
let expected = "\\begin{table}[h]
\\centering
\\caption{}
\\begin{tabular}{|c|r|}
\\hline
\\textbf{name} & \\textbf{age} \\\\
\\hline
John & 12 \\\\
Lucy & 15 \\\\
\\hline
\\end{tabular}
\\end{table}";
assert_eq!(got, expected);
}