2023-12-08 17:12:46 +01:00
|
|
|
package _023
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDay05Part1(t *testing.T) {
|
|
|
|
tests := []testCase{
|
|
|
|
{"inputs/day05_test1", 1},
|
|
|
|
{"inputs/day05", 227653707},
|
|
|
|
}
|
|
|
|
for _, test := range tests {
|
|
|
|
t.Run(test.filename, check(test, Day05Part1))
|
|
|
|
}
|
|
|
|
t.Run("inputs/day05", func(t *testing.T) {
|
|
|
|
file, err := os.Open("inputs/day05")
|
|
|
|
require.NoError(t, err)
|
|
|
|
got, err := Day05Part1(file)
|
|
|
|
require.NoError(t, err)
|
|
|
|
assert.Less(t, got, 392296326) // 392296326 is too high
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDay05Part2(t *testing.T) {
|
|
|
|
tests := []testCase{
|
2023-12-08 18:14:11 +01:00
|
|
|
{"inputs/day05_test2", 46},
|
|
|
|
{"inputs/day05", 78775051},
|
2023-12-08 17:12:46 +01:00
|
|
|
}
|
|
|
|
for _, test := range tests {
|
|
|
|
t.Run(test.filename, check(test, Day05Part2))
|
|
|
|
}
|
|
|
|
}
|
2023-12-08 18:14:11 +01:00
|
|
|
|
|
|
|
func TestDay05Ranges(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
dRange day05Range
|
|
|
|
seedRange day05SeedRange
|
|
|
|
expected []day05SeedRange
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"seed included in range",
|
|
|
|
day05Range{0, 5, 5},
|
|
|
|
day05SeedRange{6, 8},
|
|
|
|
[]day05SeedRange{{1, 3}},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"range included in seed",
|
|
|
|
day05Range{0, 10, 2},
|
|
|
|
day05SeedRange{9, 13},
|
|
|
|
[]day05SeedRange{{0, 2}, {9, 10}, {12, 13}},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, test := range tests {
|
|
|
|
t.Run(test.name, func(t *testing.T) {
|
|
|
|
got := day05Map{test.dRange}.convertRange(test.seedRange)
|
|
|
|
assert.Equal(t, test.expected, got)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|