Replace branch coverage line anonymization test with MC/DC

We don't need the branch coverage version of this test, but we can recycle is
to make sure that the MC/DC coverage support works as expected.
This commit is contained in:
Zalathar 2024-04-08 21:27:18 +10:00
parent 1135cd3e78
commit 4b3538352d

View File

@ -50,72 +50,68 @@ fn normalize_platform_differences() {
} }
/// Test for anonymizing line numbers in coverage reports, especially for /// Test for anonymizing line numbers in coverage reports, especially for
/// branch regions. /// MC/DC regions.
/// ///
/// FIXME(#119681): This test can be removed when we have examples of branch /// FIXME(#123409): This test can be removed when we have examples of MC/DC
/// coverage in the actual coverage test suite. /// coverage in the actual coverage test suite.
#[test] #[test]
fn anonymize_coverage_line_numbers() { fn anonymize_coverage_line_numbers() {
let anon = |coverage| TestCx::anonymize_coverage_line_numbers(coverage); let anon = |coverage| TestCx::anonymize_coverage_line_numbers(coverage);
let input = r#" let input = r#"
6| 3|fn print_size<T>() { 7| 2|fn mcdc_check_neither(a: bool, b: bool) {
7| 3| if std::mem::size_of::<T>() > 4 { 8| 2| if a && b {
^0
------------------ ------------------
| Branch (7:8): [True: 0, False: 1] |---> MC/DC Decision Region (8:8) to (8:14)
| Branch (7:8): [True: 0, False: 1] |
| Branch (7:8): [True: 1, False: 0] | Number of Conditions: 2
| Condition C1 --> (8:8)
| Condition C2 --> (8:13)
|
| Executed MC/DC Test Vectors:
|
| C1, C2 Result
| 1 { F, - = F }
|
| C1-Pair: not covered
| C2-Pair: not covered
| MC/DC Coverage for Decision: 0.00%
|
------------------ ------------------
8| 1| println!("size > 4"); 9| 0| say("a and b");
10| 2| } else {
11| 2| say("not both");
12| 2| }
13| 2|}
"#; "#;
let expected = r#" let expected = r#"
LL| 3|fn print_size<T>() { LL| 2|fn mcdc_check_neither(a: bool, b: bool) {
LL| 3| if std::mem::size_of::<T>() > 4 { LL| 2| if a && b {
^0
------------------ ------------------
| Branch (LL:8): [True: 0, False: 1] |---> MC/DC Decision Region (LL:8) to (LL:14)
| Branch (LL:8): [True: 0, False: 1] |
| Branch (LL:8): [True: 1, False: 0] | Number of Conditions: 2
------------------ | Condition C1 --> (LL:8)
LL| 1| println!("size > 4"); | Condition C2 --> (LL:13)
"#; |
| Executed MC/DC Test Vectors:
assert_eq!(anon(input), expected); |
| C1, C2 Result
////////// | 1 { F, - = F }
|
let input = r#" | C1-Pair: not covered
12| 3|} | C2-Pair: not covered
------------------ | MC/DC Coverage for Decision: 0.00%
| branch_generics::print_size::<()>: |
| 6| 1|fn print_size<T>() {
| 7| 1| if std::mem::size_of::<T>() > 4 {
| ------------------
| | Branch (7:8): [True: 0, False: 1]
| ------------------
| 8| 0| println!("size > 4");
| 9| 1| } else {
| 10| 1| println!("size <= 4");
| 11| 1| }
| 12| 1|}
------------------
"#;
let expected = r#"
LL| 3|}
------------------
| branch_generics::print_size::<()>:
| LL| 1|fn print_size<T>() {
| LL| 1| if std::mem::size_of::<T>() > 4 {
| ------------------
| | Branch (LL:8): [True: 0, False: 1]
| ------------------
| LL| 0| println!("size > 4");
| LL| 1| } else {
| LL| 1| println!("size <= 4");
| LL| 1| }
| LL| 1|}
------------------ ------------------
LL| 0| say("a and b");
LL| 2| } else {
LL| 2| say("not both");
LL| 2| }
LL| 2|}
"#; "#;
assert_eq!(anon(input), expected); assert_eq!(anon(input), expected);