// run-pass

fn test_generic<T, F>(expected: T, not_expected: T, eq: F) where
    T: Clone,
    F: FnOnce(T, T) -> bool,
{
    let actual: T = if true { expected.clone() } else { not_expected };
    assert!(eq(expected, actual));
}

fn test_bool() {
    fn compare_bool(b1: bool, b2: bool) -> bool { return b1 == b2; }
    test_generic::<bool, _>(true, false, compare_bool);
}

#[derive(Clone)]
struct Pair {
    a: isize,
    b: isize,
}

fn test_rec() {
    fn compare_rec(t1: Pair, t2: Pair) -> bool {
        t1.a == t2.a && t1.b == t2.b
    }
    test_generic::<Pair, _>(Pair{a: 1, b: 2}, Pair{a: 2, b: 3}, compare_rec);
}

pub fn main() { test_bool(); test_rec(); }
