97 lines
2.3 KiB
Rust
97 lines
2.3 KiB
Rust
|
use crate::{info, perform};
|
||
|
use crate::worker::XORWorker;
|
||
|
|
||
|
// Test wrong number of arguments
|
||
|
#[test]
|
||
|
fn test_missing_exe_param() {
|
||
|
let params: Vec<&'static str> = vec![];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 0\n\n{}",
|
||
|
info("xor-files"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_zero_params() {
|
||
|
let params = vec!["myxor"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 0\n\n{}",
|
||
|
info("myxor"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_one_param() {
|
||
|
let params = vec!["myxor", "a"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 1\n\n{}",
|
||
|
info("myxor"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_two_params() {
|
||
|
let params = vec!["myxor", "a", "b"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 2\n\n{}",
|
||
|
info("myxor"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_four_params() {
|
||
|
let params = vec!["myxor", "a", "b", "c", "d"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 4\n\n{}",
|
||
|
info("myxor"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_five_params() {
|
||
|
let params = vec!["myxor", "a", "b", "c", "d", "e"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
format!(
|
||
|
"Expected 3 arguments, but got 5\n\n{}",
|
||
|
info("myxor"),
|
||
|
)
|
||
|
));
|
||
|
}
|
||
|
|
||
|
// Test right number of arguments
|
||
|
struct TestWorker;
|
||
|
|
||
|
impl XORWorker for TestWorker {
|
||
|
fn work(input: [&str; 2], output: &str) -> Result<(), String> {
|
||
|
Err(format!(
|
||
|
"Operation:\n{} = {} xor {}",
|
||
|
output, input[0], input[1]
|
||
|
))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_three_params() {
|
||
|
let params = vec!["myxor", "file-a", "file-b", "file-c"];
|
||
|
let result = perform::<_, TestWorker>(params.iter());
|
||
|
assert_eq!(result, Err(
|
||
|
"Operation:\nfile-c = file-a xor file-b".to_string()
|
||
|
));
|
||
|
}
|