use std::process::Command;
use std::str;
#[test]
fn test_help_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--help"])
.current_dir(".")
.output()
.expect("执行命令失败");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
let stderr = str::from_utf8(&output.stderr).unwrap();
let combined_output = format!("{}{}", stdout, stderr);
assert!(combined_output.contains("计算机代数系统") || combined_output.contains("yufmath"));
}
#[test]
fn test_version_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--version"])
.current_dir(".")
.output()
.expect("执行命令失败");
assert!(output.status.success());
let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(stdout.contains("yufmath"));
}
#[test]
fn test_compute_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "compute", "2+3"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_simplify_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "simplify", "x+x"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_diff_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "diff", "x^2", "x"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_integrate_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "integrate", "2*x", "x"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_verbose_mode() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--verbose", "compute", "1+1"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stdout = str::from_utf8(&output.stdout).unwrap();
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stdout.contains("Yufmath v") || stderr.contains("正在计算表达式"));
}
#[test]
fn test_quiet_mode() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--quiet", "compute", "1+1"])
.current_dir(".")
.output()
.expect("执行命令失败");
assert!(!output.status.success() || output.stdout.is_empty() || !str::from_utf8(&output.stdout).unwrap().contains("详细模式"));
}
#[test]
fn test_format_options() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--format", "latex", "compute", "x^2"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--format", "mathml", "compute", "x^2"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_precision_option() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "--precision", "10", "compute", "pi"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}
#[test]
fn test_invalid_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "invalid_command"])
.current_dir(".")
.output()
.expect("执行命令失败");
assert!(!output.status.success());
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("error") || stderr.contains("错误") || stderr.contains("unrecognized"));
}
#[test]
fn test_interactive_command() {
let output = Command::new("cargo")
.args(&["run", "--bin", "yufmath", "--", "interactive"])
.current_dir(".")
.output()
.expect("执行命令失败");
let stderr = str::from_utf8(&output.stderr).unwrap();
assert!(stderr.contains("not yet implemented") || stderr.contains("todo"));
}