Testing and Diagnostics Capstone
Table Cases
Count Passing Rows
A table of input and expected pairs can be run through one expression to produce a compact pass count.
Program
Play the program to choose an offset and count how many table rows pass.
table_case_counter.rs
Replay: real traced execution (multi-file project)
fn main() {
let offset = 1;
let cases = [(1, 2), (3, 4), (5, 6)];
let passed = cases.iter()
.copied()
.map(|(input, expected)| input + offset == expected)
.filter(|passed| *passed)
.count();
println!("passed={}/{}", passed, cases.len());
}
fn main() {
let offset = 0;
let cases = [(1, 2), (3, 4), (5, 6)];
let passed = cases.iter()
.copied()
.map(|(input, expected)| input + offset == expected)
.filter(|passed| *passed)
.count();
println!("passed={}/{}", passed, cases.len());
}
fn main() {
let offset = 2;
let cases = [(1, 2), (3, 4), (5, 6)];
let passed = cases.iter()
.copied()
.map(|(input, expected)| input + offset == expected)
.filter(|passed| *passed)
.count();
println!("passed={}/{}", passed, cases.len());
}
offset ← 1, cases ← [(1, 2), (3, 4), (5, 6)], passed ← 3
1fn main() {2 let offse→ 1t = 1; //@offset=1, 0, 23 let case→ [(1, 2), (3, 4), (5, 6)]s = [(1, 2), (3, 4), (5, 6)];4 let passe→ 3d = cases.iter()5 .copied()6 .map(|(input, expected)| input + offset == expected)7 .filter(|passed| *passed)8 .count();9 println!("passed={}/{}", passed, cases.len());10}outputpassed=3/3
offset ← 0, cases ← [(1, 2), (3, 4), (5, 6)], passed ← 0
1fn main() {2 let offse→ 0t = 0;3 let case→ [(1, 2), (3, 4), (5, 6)]s = [(1, 2), (3, 4), (5, 6)];4 let passe→ 0d = cases.iter()5 .copied()6 .map(|(input, expected)| input + offset == expected)7 .filter(|passed| *passed)8 .count();9 println!("passed={}/{}", passed, cases.len());10}outputpassed=0/3
offset ← 2, cases ← [(1, 2), (3, 4), (5, 6)], passed ← 0
1fn main() {2 let offse→ 2t = 2;3 let case→ [(1, 2), (3, 4), (5, 6)]s = [(1, 2), (3, 4), (5, 6)];4 let passe→ 0d = cases.iter()5 .copied()6 .map(|(input, expected)| input + offset == expected)7 .filter(|passed| *passed)8 .count();9 println!("passed={}/{}", passed, cases.len());10}outputpassed=0/3
table cases
Each tuple holds one input and expected output.
map
The `map` expression converts each row into a pass/fail boolean.
count
Filtering true booleans gives the number of passing rows.