2021 day8/rust: add test
This commit is contained in:
parent
11907cf8b5
commit
591cde8631
1 changed files with 77 additions and 0 deletions
77
2021/day8/day8_rs/tests/unscramble.rs
Normal file
77
2021/day8/day8_rs/tests/unscramble.rs
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use day8_rs::{v1, v2, v3, v4, LineResult};
|
||||||
|
|
||||||
|
fn test_unscramble_with_input(f: fn(&str) -> LineResult, input: &[&str]) -> LineResult {
|
||||||
|
let mut result = LineResult {
|
||||||
|
unique_digits: 0,
|
||||||
|
number: 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
for line in input {
|
||||||
|
let LineResult {
|
||||||
|
unique_digits,
|
||||||
|
number,
|
||||||
|
} = f(line);
|
||||||
|
result.unique_digits += unique_digits;
|
||||||
|
result.number += number;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_unscramble(f: fn(&str) -> LineResult) {
|
||||||
|
let test_file = |name| {
|
||||||
|
let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||||
|
path.push("inputs/");
|
||||||
|
path.push(name);
|
||||||
|
|
||||||
|
let input = std::fs::read_to_string(path).unwrap();
|
||||||
|
let input: Vec<_> = input.lines().collect();
|
||||||
|
test_unscramble_with_input(f, &input)
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
test_file("example.txt"),
|
||||||
|
LineResult {
|
||||||
|
unique_digits: 26,
|
||||||
|
number: 61229
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
test_file("input.txt"),
|
||||||
|
LineResult {
|
||||||
|
unique_digits: 543,
|
||||||
|
number: 994266
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
test_file("large.txt"),
|
||||||
|
LineResult {
|
||||||
|
unique_digits: 159946,
|
||||||
|
number: 498570828
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_unscramble_v1() {
|
||||||
|
test_unscramble(v1::unscramble)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_unscramble_v2() {
|
||||||
|
test_unscramble(v2::unscramble)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_unscramble_v3() {
|
||||||
|
test_unscramble(v3::unscramble)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn test_unscramble_v4() {
|
||||||
|
test_unscramble(v4::unscramble)
|
||||||
|
}
|
Loading…
Reference in a new issue