mirror of
https://github.com/Threnklyn/advent-of-code-go.git
synced 2026-06-06 04:08:27 +02:00
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/alexchao26/advent-of-code-go/util"
|
|
)
|
|
|
|
var exampleInput = `Step C must be finished before step A can begin.
|
|
Step C must be finished before step F can begin.
|
|
Step A must be finished before step B can begin.
|
|
Step A must be finished before step D can begin.
|
|
Step B must be finished before step E can begin.
|
|
Step D must be finished before step E can begin.
|
|
Step F must be finished before step E can begin.
|
|
`
|
|
|
|
var tests1 = []struct {
|
|
name string
|
|
want string
|
|
input string
|
|
}{
|
|
{"example", "CABDFE", exampleInput},
|
|
{"actual", "JMQZELVYXTIGPHFNSOADKWBRUC", util.ReadFile("input.txt")},
|
|
}
|
|
|
|
func TestPart1(t *testing.T) {
|
|
for _, test := range tests1 {
|
|
t.Run(test.name, func(*testing.T) {
|
|
got := part1(test.input)
|
|
if got != test.want {
|
|
t.Errorf("want %v, got %v", test.want, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
var tests2 = []struct {
|
|
name string
|
|
want int
|
|
input string
|
|
workers int
|
|
fudgeTime int
|
|
}{
|
|
{"example", 15, exampleInput, 2, 0},
|
|
{"actual", 1133, util.ReadFile("input.txt"), 5, 60},
|
|
}
|
|
|
|
func TestPart2(t *testing.T) {
|
|
for _, test := range tests2 {
|
|
t.Run(test.name, func(*testing.T) {
|
|
got := part2(test.input, test.workers, test.fudgeTime)
|
|
if got != test.want {
|
|
t.Errorf("got %v; want %v", got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestTimeForStep(t *testing.T) {
|
|
for _, test := range []struct {
|
|
input string
|
|
want int
|
|
fudgeFactor int
|
|
}{
|
|
{"A", 1, 0},
|
|
{"F", 6, 0},
|
|
{"J", 10, 0},
|
|
{"Z", 26, 0},
|
|
{"A", 61, 60},
|
|
{"F", 66, 60},
|
|
{"J", 70, 60},
|
|
{"Z", 86, 60},
|
|
} {
|
|
if got := timeForStep(test.input, test.fudgeFactor); got != test.want {
|
|
t.Errorf("timeForStep(%s, %d) = %d, want %d", test.input, test.fudgeFactor, got, test.want)
|
|
}
|
|
}
|
|
}
|