2022 rust add test cases

This commit is contained in:
Maciej Jur 2022-12-04 19:36:57 +01:00
parent 63a1ed45c2
commit 4bd02db8cd
7 changed files with 151 additions and 3 deletions

View file

@ -3,5 +3,5 @@ mod solutions;
fn main() {
solutions::day04::run();
solutions::day05::run();
}

View file

@ -10,11 +10,12 @@ pub fn run() -> () {
println!("Part 2: {}", solve2(&data));
}
fn solve1(data: &Vec<Vec<i32>>) -> i32 {
data.iter().map(|xs| xs.iter().sum::<i32>()).max().unwrap()
}
#[inline]
#[inline(always)]
fn insert(arr: &mut [i32; 3], to_insert: i32) {
if to_insert > arr[2] {
for idx in (0..3).rev() {
@ -40,7 +41,6 @@ fn solve2(data: &Vec<Vec<i32>>) -> i32 {
three.iter().sum()
}
fn parse_data(data: Vec<String>) -> Vec<Vec<i32>> {
data.iter()
.fold(vec![vec![]], | mut acc, next| {
@ -54,3 +54,31 @@ fn parse_data(data: Vec<String>) -> Vec<Vec<i32>> {
acc
})
}
#[cfg(test)]
mod tests {
use super::*;
fn data() -> Vec<&'static str> {
vec![
"1000", "2000", "3000", "",
"4000", "",
"5000", "6000", "",
"7000", "8000", "9000", "",
"10000",
]
}
#[test]
fn part1() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(24000, solve1(&data));
}
#[test]
fn part2() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(45000, solve2(&data));
}
}

View file

@ -121,3 +121,25 @@ fn parse_data(data: Vec<String>) -> Vec<(char, char)> {
})
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
fn data() -> Vec<&'static str> {
vec!["A Y", "B X", "C Z"]
}
#[test]
fn part1() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(15, solve1(&data));
}
#[test]
fn part2() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(12, solve2(&data));
}
}

View file

@ -58,3 +58,32 @@ fn parse_data(data: Vec<String>) -> Vec<(HashSet<char>, HashSet<char>)> {
})
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
fn data() -> Vec<&'static str> {
vec![
"vJrwpWtwJgWrhcsFMMfFFhFp",
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
"PmmdzqPrVvPwwTWBwg",
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
"ttgJtRGJQctTZtZT",
"CrZsJsPPZsGzwwsLwLmpwMDw"
]
}
#[test]
fn part1() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(157, solve1(&data));
}
#[test]
fn part2() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(70, solve2(&data));
}
}

View file

@ -47,3 +47,25 @@ fn parse_data(data: Vec<String>) -> Vec<((i32, i32), (i32, i32))> {
})
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
fn data() -> Vec<&'static str> {
vec!["2-4,6-8", "2-3,4-5", "5-7,7-9", "2-8,3-7", "6-6,4-6", "2-6,4-8"]
}
#[test]
fn part1() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(2, solve1(&data));
}
#[test]
fn part2() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(4, solve2(&data));
}
}

View file

@ -0,0 +1,46 @@
use crate::utils;
pub fn run() -> () {
let data = parse_data(utils::read_lines(utils::Source::Scratch));
println!("Day 5");
println!("Part 1: {}", solve1(&data));
println!("Part 2: {}", solve2(&data));
}
fn solve1(data: &()) -> i32 {
1
}
fn solve2(data: &()) -> i32 {
2
}
fn parse_data(data: Vec<String>) -> () {
()
}
#[cfg(test)]
mod tests {
use super::*;
fn data() -> Vec<&'static str> {
vec![""]
}
#[test]
fn part1() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(1, solve1(&data));
}
#[test]
fn part2() {
let data = parse_data(data().into_iter().map(String::from).collect());
assert_eq!(2, solve2(&data));
}
}

View file

@ -2,3 +2,4 @@ pub mod day01;
pub mod day02;
pub mod day03;
pub mod day04;
pub mod day05;