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) } } } }