You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.1 KiB
71 lines
1.1 KiB
package adventoc2024
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func dup(input string) (io.Reader, io.Reader) {
|
|
return strings.NewReader(input), strings.NewReader(input)
|
|
}
|
|
|
|
type puzzle interface {
|
|
Part1(io.Reader) string
|
|
Part2(io.Reader) string
|
|
}
|
|
|
|
func TestPuzzles(t *testing.T) {
|
|
tests := []struct {
|
|
solver puzzle
|
|
ans1 string
|
|
ans2 string
|
|
input string
|
|
}{
|
|
|
|
{
|
|
solver: Day1{},
|
|
ans1: "11",
|
|
ans2: "31",
|
|
input: `3 4
|
|
4 3
|
|
2 5
|
|
1 3
|
|
3 9
|
|
3 3`,
|
|
},
|
|
{
|
|
solver: Day2{},
|
|
ans1: "2",
|
|
ans2: "4",
|
|
input: `7 6 4 2 1
|
|
1 2 7 8 9
|
|
9 7 6 2 1
|
|
1 3 2 4 5
|
|
8 6 4 4 1
|
|
1 3 6 7 9`,
|
|
},
|
|
{
|
|
solver: Day3{},
|
|
ans1: "161",
|
|
ans2: "",
|
|
input: "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))",
|
|
},
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
name := fmt.Sprintf("Day%d", i+1)
|
|
t.Run(name, func(t *testing.T) {
|
|
p1, p2 := dup(tt.input)
|
|
if got := tt.solver.Part1(p1); got != tt.ans1 {
|
|
t.Errorf("Part 1 = %s; expected %s", got, tt.ans1)
|
|
}
|
|
|
|
if got := tt.solver.Part2(p2); got != tt.ans2 {
|
|
t.Errorf("Part 2 = %s; expected %s", got, tt.ans2)
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|
|
|