update macro api

This commit is contained in:
2022-12-04 17:56:26 -05:00
parent cad101cf54
commit ee1a97f61a
6 changed files with 147 additions and 130 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "advent_of_code_macro"
version = "0.1.1"
version = "0.1.2"
edition = "2021"
description = "An test generating macro for advent of code"
license = "MIT"
+15 -28
View File
@@ -1,55 +1,42 @@
#[macro_export]
macro_rules! solve_problem {
macro_rules! generate_tests {
(day $day:literal,
Input $input_type:ty,
parse $parse_input:expr,
part one $part_one:expr,
part two $part_two:expr,
$parse_input:ident,
$part_one:ident,
$part_two:ident,
sample tests [$part_one_sample_ans:literal, $part_two_sample_ans:literal],
star tests [$part_one_ans:literal, $part_two_ans:literal]) => {
#[cfg(test)]
paste::paste! {
mod [<day_ $day _tests>] {
use super::*;
type Input = $input_type;
fn parse_input(s: &str) -> Input {
$parse_input(s)
}
fn part_one_solution(data: Input) -> i32 {
$part_one(data)
}
fn part_two_solution(data: Input) -> i32 {
$part_two(data)
}
use super::{$parse_input, $part_one, $part_two};
#[test]
fn part_one_sample() {
let input = include_str!(concat!("../input/day_", $day, "_sample.txt"));
let data = parse_input(input);
assert_eq!($part_one_sample_ans, part_one_solution(data));
let data = $parse_input(input);
assert_eq!($part_one_sample_ans, $part_one(data));
}
#[test]
fn part_one() {
fn part_one_star() {
let input = include_str!(concat!("../input/day_", $day, ".txt"));
let data = parse_input(input);
assert_eq!($part_one_ans, part_one_solution(data));
let data = $parse_input(input);
assert_eq!($part_one_ans, $part_one(data));
}
#[test]
fn part_two_sample() {
let input = include_str!(concat!("../input/day_", $day, "_sample.txt"));
let data = parse_input(input);
assert_eq!($part_two_sample_ans, part_two_solution(data));
let data = $parse_input(input);
assert_eq!($part_two_sample_ans, $part_two(data));
}
#[test]
fn part_two() {
fn part_two_star() {
let input = include_str!(concat!("../input/day_", $day, ".txt"));
let data = parse_input(input);
assert_eq!($part_two_ans, part_two_solution(data));
let data = $parse_input(input);
assert_eq!($part_two_ans, $part_two(data));
}
}
}