aoc_2024/2025/five/five_test.go

67 lines
1.4 KiB
Go

package main
import "testing"
type insertTest struct {
ranges []int
toinsert freshRange
expected []int
}
var insertTests = []insertTest{
{[]int{1, 3}, freshRange{4, 10}, []int{1, 3, 4, 10}},
{[]int{1, 5}, freshRange{4, 10}, []int{1, 10}},
}
func TestInsert(t *testing.T) {
for _, test := range insertTests {
inDB, _ := dbFromSlice(test.ranges)
expectedDB, _ := dbFromSlice(test.expected)
inDB.insert(test.toinsert)
if len(inDB.ranges) != len(expectedDB.ranges) {
t.Errorf("%+v != %+v", expectedDB, inDB)
continue
}
for i := range inDB.ranges {
if inDB.ranges[i] != expectedDB.ranges[i] {
t.Errorf("%v != %v", expectedDB, inDB)
}
}
}
}
type collapseTest struct {
ranges []int
expected []int
}
var collapseTests = []collapseTest{
{[]int{1, 3, 4, 10}, []int{1, 3, 4, 10}},
{[]int{1, 3, 4, 10, 2, 5}, []int{1, 5, 4, 10}},
{[]int{1, 5, 4, 10}, []int{1, 10}},
{[]int{1, 5, 5, 10}, []int{1, 10}},
{[]int{2, 5, 1, 10}, []int{1, 10}},
{[]int{1, 5, 2, 3}, []int{1, 5}},
}
func TestCollapse(t *testing.T) {
for _, test := range collapseTests {
inDB, _ := dbFromSlice(test.ranges)
expectedDB, _ := dbFromSlice(test.expected)
inDB.collapse()
if len(inDB.ranges) != len(expectedDB.ranges) {
t.Errorf("%v != %v", expectedDB.ranges, inDB.ranges)
continue
}
for i := range inDB.ranges {
if inDB.ranges[i] != expectedDB.ranges[i] {
t.Errorf("%v != %v", expectedDB.ranges, inDB.ranges)
}
}
}
}