mirror of
https://github.com/Threnklyn/advent-of-code-go.git
synced 2026-06-13 23:23:31 +02:00
2018 day 07 - graph & multiple workers
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user