Commit 631c8d8a authored by acud's avatar acud Committed by GitHub

intervalstore: fix uint64 overflow bug (#1609)

parent 8020b87d
...@@ -24,6 +24,7 @@ package intervalstore ...@@ -24,6 +24,7 @@ package intervalstore
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"math"
"strconv" "strconv"
"sync" "sync"
) )
...@@ -68,19 +69,23 @@ func (i *Intervals) add(start, end uint64) { ...@@ -68,19 +69,23 @@ func (i *Intervals) add(start, end uint64) {
if end < i.start { if end < i.start {
return return
} }
endCheck := end + 1
if end == math.MaxUint64 {
endCheck = end
}
minStartJ := -1 minStartJ := -1
maxEndJ := -1 maxEndJ := -1
j := 0 j := 0
for ; j < len(i.ranges); j++ { for ; j < len(i.ranges); j++ {
if minStartJ < 0 { if minStartJ < 0 {
if (start <= i.ranges[j][0] && end+1 >= i.ranges[j][0]) || (start <= i.ranges[j][1]+1 && end+1 >= i.ranges[j][1]) { if (start <= i.ranges[j][0] && endCheck >= i.ranges[j][0]) || (start <= i.ranges[j][1]+1 && endCheck >= i.ranges[j][1]) {
if i.ranges[j][0] < start { if i.ranges[j][0] < start {
start = i.ranges[j][0] start = i.ranges[j][0]
} }
minStartJ = j minStartJ = j
} }
} }
if (start <= i.ranges[j][1] && end+1 >= i.ranges[j][1]) || (start <= i.ranges[j][0] && end+1 >= i.ranges[j][0]) { if (start <= i.ranges[j][1] && endCheck >= i.ranges[j][1]) || (start <= i.ranges[j][0] && endCheck >= i.ranges[j][0]) {
if i.ranges[j][1] > end { if i.ranges[j][1] > end {
end = i.ranges[j][1] end = i.ranges[j][1]
} }
...@@ -222,7 +227,7 @@ func (i *Intervals) UnmarshalBinary(data []byte) (err error) { ...@@ -222,7 +227,7 @@ func (i *Intervals) UnmarshalBinary(data []byte) (err error) {
if err != nil { if err != nil {
return fmt.Errorf("parsing the second element in range %d: %v", j, err) return fmt.Errorf("parsing the second element in range %d: %v", j, err)
} }
i.ranges = append(i.ranges, [2]uint64{start, end}) i.add(start, end)
} }
return nil return nil
......
...@@ -16,7 +16,10 @@ ...@@ -16,7 +16,10 @@
package intervalstore package intervalstore
import "testing" import (
"math"
"testing"
)
// Test tests Interval methods Add, Next and Last for various // Test tests Interval methods Add, Next and Last for various
// initial state. // initial state.
...@@ -471,3 +474,34 @@ func TestMerge(t *testing.T) { ...@@ -471,3 +474,34 @@ func TestMerge(t *testing.T) {
} }
} }
} }
// TestMaxUint64 is a regression test to verify that interval
// is handled correctly at the edges.
func TestMaxUint64(t *testing.T) {
intervals := NewIntervals(1)
intervals.Add(math.MaxUint64-1, math.MaxUint64)
intervals.Add(1, math.MaxUint64)
intervals.Add(2, math.MaxUint64)
intervals.Add(math.MaxUint64, math.MaxUint64)
wantstr := "[[1 18446744073709551615]]"
if s := intervals.String(); s != wantstr {
t.Fatalf("got interval string '%s' want '%s'", s, wantstr)
}
}
// TestEdgeBugUnmarshal is a regression test for the bug that
// created incorrect intervals at the edges. It checks that the
// serialized interval recovers from the error of multiple duplicate
// intervals serialized sequencially.
func TestEdgeBugUnmarshal(t *testing.T) {
str := "1;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;1,3w5e11264sgsf;50an,3w5e11264sgsf;1,3w5e11264sgsf;1,50am"
intervals := new(Intervals)
err := intervals.UnmarshalBinary([]byte(str))
if err != nil {
t.Fatal(err)
}
wantstr := "[[1 18446744073709551615]]"
if s := intervals.String(); s != wantstr {
t.Fatalf("got interval string '%s' want '%s'", s, wantstr)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment