91 lines
2.4 KiB
Rust
91 lines
2.4 KiB
Rust
use std::env;
|
|
|
|
use duct::cmd;
|
|
|
|
#[test]
|
|
fn import_stdin() {
|
|
let bin = env!("CARGO_BIN_EXE_automerge");
|
|
let initial_state_json = serde_json::json!({
|
|
"birds": {
|
|
"wrens": 3.0,
|
|
"sparrows": 15.0
|
|
}
|
|
});
|
|
let json_bytes = serde_json::to_string_pretty(&initial_state_json).unwrap();
|
|
|
|
let no_pipe_no_file = cmd!(bin, "import").stdin_bytes(json_bytes.clone()).run();
|
|
|
|
assert!(no_pipe_no_file.is_err());
|
|
|
|
let pipe_no_file = cmd!(bin, "import")
|
|
.stdin_bytes(json_bytes.clone())
|
|
.stdout_capture()
|
|
.run();
|
|
|
|
assert!(pipe_no_file.is_ok());
|
|
|
|
let mut temp_file = std::env::temp_dir();
|
|
temp_file.push("import_test.mpl");
|
|
let no_pipe_file = cmd!(bin, "import", "--out", &temp_file)
|
|
.stdin_bytes(json_bytes)
|
|
.run();
|
|
|
|
assert!(no_pipe_file.is_ok());
|
|
std::fs::remove_file(temp_file).unwrap();
|
|
}
|
|
|
|
#[test]
|
|
fn export_stdout() {
|
|
let bin = env!("CARGO_BIN_EXE_automerge");
|
|
let no_pipe_no_file = cmd!(bin, "export").stdout_capture().run();
|
|
|
|
assert!(no_pipe_no_file.is_err());
|
|
}
|
|
|
|
#[test]
|
|
fn import_export_isomorphic() {
|
|
let bin = env!("CARGO_BIN_EXE_automerge");
|
|
let initial_state_json = serde_json::json!({
|
|
"birds": {
|
|
"wrens": 3.0,
|
|
"sparrows": 15.0
|
|
}
|
|
});
|
|
let json_bytes = serde_json::to_string_pretty(&initial_state_json).unwrap();
|
|
|
|
let stdout = cmd!(bin, "import")
|
|
.stdin_bytes(json_bytes.clone())
|
|
.pipe(cmd!(bin, "export"))
|
|
.read()
|
|
.unwrap();
|
|
assert_eq!(stdout, json_bytes);
|
|
}
|
|
|
|
#[test]
|
|
fn import_change_export() {
|
|
let bin = env!("CARGO_BIN_EXE_automerge");
|
|
let initial_state_json = serde_json::json!({
|
|
"birds": {
|
|
"wrens": 3.0,
|
|
"sparrows": 15.0
|
|
}
|
|
});
|
|
let json_bytes = serde_json::to_string_pretty(&initial_state_json).unwrap();
|
|
|
|
let stdout = cmd!(bin, "import")
|
|
.stdin_bytes(json_bytes.clone())
|
|
.pipe(cmd!(bin, "change", "set $[\"birds\"][\"owls\"] 12.0"))
|
|
.stdin_bytes(json_bytes)
|
|
.pipe(cmd!(bin, "export"))
|
|
.read()
|
|
.unwrap();
|
|
let result: serde_json::Value = serde_json::from_str(stdout.as_str()).unwrap();
|
|
let expected = serde_json::json!({
|
|
"birds": {
|
|
"wrens": 3.0,
|
|
"sparrows": 15.0,
|
|
"owls": 12.0,
|
|
}
|
|
});
|
|
assert_eq!(result, expected);
|
|
}
|