use qubit_function::*;
#[test]
fn test_three_param_conditional_clone_macro_coverage() {
println!("Starting test_three_param_conditional_clone_macro_coverage");
{
println!("Testing custom struct with macro-generated Clone (three parameters)");
let add = RcBiFunction::new(|x: &i32, y: &i32| *x + *y);
let multiply = RcBiFunction::new(|x: &i32, y: &i32| *x * *y);
let pred = RcBiPredicate::new(|x: &i32, y: &i32| *x > 0 && *y > 0);
let conditional = add.when(pred);
println!("Calling clone() on RcConditionalBiFunction - this should trigger macro-generated three-param code");
let cloned = conditional.clone();
println!("Clone completed for RcConditionalBiFunction");
let func = cloned.or_else(multiply);
assert_eq!(func.apply(&3, &4), 7);
println!("RcConditionalBiFunction test passed");
}
println!("Three-parameter conditional clone macro test passed!");
}