67 lines
1.4 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
}
|