#[macro_use]
extern crate double;
fn generate_sequence(func: &dyn Fn(i32) -> i32, min: i32, max: i32) -> Vec<i32> {
(min..max).map(func).collect()
}
fn test_function_used_correctly() {
mock_func!(
mock,
mock_fn,
i32, i32); mock.use_closure(Box::new(|x| x * 2));
let sequence = generate_sequence(&mock_fn, 1, 5);
assert_eq!(vec!(2, 4, 6, 8), sequence);
assert!(mock.has_calls_exactly_in_order(vec!(
1, 2, 3, 4
)));
}
fn test_function_with_custom_defaults() {
mock_func_no_default!(
mock,
mock_fn,
i32, 42, i32); mock.use_closure_for(3, Box::new(|x| x * 2));
let sequence = generate_sequence(&mock_fn, 1, 5);
assert_eq!(vec!(42, 42, 6, 42), sequence);
assert!(mock.has_calls_exactly_in_order(vec!(
1, 2, 3, 4
)));
}
fn main() {
test_function_used_correctly();
test_function_with_custom_defaults();
}