Files
advent-of-code-go/2018/day07/main_test.go
T
2020-11-30 12:33:10 -05:00

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)
}
}
}