advent-of-code/2024/go/day-05/main_test.go

71 lines
1.2 KiB
Go

package main
import (
"fmt"
"testing"
)
var rules = map[int][]int{
29: {13},
47: {53, 13, 61, 29},
53: {29, 13},
61: {13, 53, 29},
75: {29, 53, 47, 61, 13},
97: {13, 61, 47, 29, 53, 75},
}
var updates = [][]int{
{75, 47, 61, 53, 29},
{97, 61, 53, 29, 13},
{75, 29, 13},
{75, 97, 47, 61, 53},
{61, 13, 29},
{97, 13, 75, 29, 47},
}
func TestIsCorrectlyOrdered(t *testing.T) {
tests := []struct {
input []int
want bool
}{
{updates[0], true},
{updates[1], true},
{updates[2], true},
{updates[3], false},
{updates[4], false},
{updates[5], false},
}
for _, test := range tests {
testName := fmt.Sprint(test.input)
t.Run(testName, func(t *testing.T) {
got := isCorrectlyOrdered(rules, test.input)
if got != test.want {
t.Errorf("got %t, want %t", got, test.want)
}
})
}
}
func TestSumOfMiddlePages(t *testing.T) {
correctSum, correctedSum := calculateMiddlePageSums(rules, updates)
t.Run("correctSum", func(t *testing.T) {
want := 143
got := correctSum
if got != want {
t.Errorf("got %d, want %d", got, want)
}
})
t.Run("correctedSum", func(t *testing.T) {
want := 123
got := correctedSum
if got != want {
t.Errorf("got %d, want %d", got, want)
}
})
}