#![feature(coverage_attribute)]
//@ edition: 2021
//@ min-llvm-version: 19
//@ compile-flags: -Zcoverage-options=mcdc
//@ llvm-cov-flags: --show-branches=count --show-mcdc

fn mcdc_check_neither(a: bool, b: bool) {
    if a && b {
        say("a and b");
    } else {
        say("not both");
    }
}

fn mcdc_check_a(a: bool, b: bool) {
    if a && b {
        say("a and b");
    } else {
        say("not both");
    }
}

fn mcdc_check_b(a: bool, b: bool) {
    if a && b {
        say("a and b");
    } else {
        say("not both");
    }
}

fn mcdc_check_both(a: bool, b: bool) {
    if a && b {
        say("a and b");
    } else {
        say("not both");
    }
}

fn mcdc_check_tree_decision(a: bool, b: bool, c: bool) {
    // This expression is intentionally written in a way
    // where 100% branch coverage indicates 100% mcdc coverage.
    if a && (b || c) {
        say("pass");
    } else {
        say("reject");
    }
}

fn mcdc_check_not_tree_decision(a: bool, b: bool, c: bool) {
    // Contradict to `mcdc_check_tree_decision`,
    // 100% branch coverage of this expression does not indicate 100% mcdc coverage.
    if (a || b) && c {
        say("pass");
    } else {
        say("reject");
    }
}

fn mcdc_nested_if(a: bool, b: bool, c: bool) {
    if a || b {
        say("a or b");
        if b && c {
            say("b and c");
        }
    } else {
        say("neither a nor b");
    }
}

#[coverage(off)]
fn main() {
    mcdc_check_neither(false, false);
    mcdc_check_neither(false, true);

    mcdc_check_a(true, true);
    mcdc_check_a(false, true);

    mcdc_check_b(true, true);
    mcdc_check_b(true, false);

    mcdc_check_both(false, true);
    mcdc_check_both(true, true);
    mcdc_check_both(true, false);

    mcdc_check_tree_decision(false, true, true);
    mcdc_check_tree_decision(true, true, false);
    mcdc_check_tree_decision(true, false, false);
    mcdc_check_tree_decision(true, false, true);

    mcdc_check_not_tree_decision(false, true, true);
    mcdc_check_not_tree_decision(true, true, false);
    mcdc_check_not_tree_decision(true, false, false);
    mcdc_check_not_tree_decision(true, false, true);

    mcdc_nested_if(true, false, true);
    mcdc_nested_if(true, true, true);
    mcdc_nested_if(true, true, false);
}

#[coverage(off)]
fn say(message: &str) {
    core::hint::black_box(message);
}
