1
1
mirror of https://github.com/wader/fq.git synced 2024-12-12 13:14:16 +03:00
fq/pkg/ranges/ranges_test.go
2021-09-12 13:08:50 +02:00

40 lines
869 B
Go

package ranges_test
import (
"fmt"
"reflect"
"testing"
"github.com/wader/fq/pkg/ranges"
)
func TestRangeGaps(t *testing.T) {
testCases := []struct {
total string
ranges string
expected string
}{
{"0:0", "", "0:0"},
{"0:10", "", "0:10"},
{"0:10", "0:10", ""},
{"0:10", "0:0", "0:10"},
{"0:10", "1:9", "0:1"},
{"0:10", "0:9", "9:1"},
{"0:10", "1:1 8:1", "0:1 2:6 9:1"},
{"0:10", "1:1 2:5 8:1", "0:1 9:1"},
{"0:10", "1:1 2:8 8:2", "0:1"},
{"0:10", "0:4 2:8 8:2", ""},
}
for _, tC := range testCases {
t.Run(fmt.Sprintf("%v_%v_%v", tC.total, tC.ranges, tC.expected), func(t *testing.T) {
actual := ranges.Gaps(ranges.RangeFromString(tC.total), ranges.SliceFromString(tC.ranges))
if !reflect.DeepEqual(ranges.SliceFromString(tC.expected), actual) {
t.Errorf("expected %v, got %v", tC.expected, actual)
}
})
}
}