mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
127 lines
2.8 KiB
Go
127 lines
2.8 KiB
Go
package logstorage
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestU128MarshalUnmarshal(t *testing.T) {
|
|
f := func(u *u128, marshaledLen int) {
|
|
t.Helper()
|
|
data := u.marshal(nil)
|
|
if len(data) != marshaledLen {
|
|
t.Fatalf("unexpected length of marshaled u128; got %d; want %d", len(data), marshaledLen)
|
|
}
|
|
var u2 u128
|
|
tail, err := u2.unmarshal(data)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error at unmarshal(%s): %s", u, err)
|
|
}
|
|
if len(tail) != 0 {
|
|
t.Fatalf("unexpected non-emtpy tail after unmarshal(%s): %X", u, tail)
|
|
}
|
|
if !reflect.DeepEqual(u, &u2) {
|
|
t.Fatalf("unexpected value obtained from unmarshal(%s); got %s; want %s", u, &u2, u)
|
|
}
|
|
s1 := u.String()
|
|
s2 := u2.String()
|
|
if s1 != s2 {
|
|
t.Fatalf("unexpected string representation after unmarshal; got %s; want %s", s2, s1)
|
|
}
|
|
}
|
|
f(&u128{}, 16)
|
|
f(&u128{
|
|
hi: 123,
|
|
lo: 456,
|
|
}, 16)
|
|
}
|
|
|
|
func TestU128UnmarshalFailure(t *testing.T) {
|
|
f := func(data []byte) {
|
|
t.Helper()
|
|
dataOrig := append([]byte{}, data...)
|
|
var u u128
|
|
tail, err := u.unmarshal(data)
|
|
if err == nil {
|
|
t.Fatalf("expecting non-nil error")
|
|
}
|
|
if string(tail) != string(dataOrig) {
|
|
t.Fatalf("unexpected tail; got %q; want %q", tail, dataOrig)
|
|
}
|
|
}
|
|
f(nil)
|
|
f([]byte("foo"))
|
|
}
|
|
|
|
func TestU128LessEqual(t *testing.T) {
|
|
// compare equal values
|
|
u1 := &u128{}
|
|
u2 := &u128{}
|
|
if u1.less(u2) {
|
|
t.Fatalf("less for equal values must return false")
|
|
}
|
|
if u2.less(u1) {
|
|
t.Fatalf("less for equal values must return false")
|
|
}
|
|
if !u1.equal(u2) {
|
|
t.Fatalf("unexpected equal(%s, %s) result; got false; want true", u1, u2)
|
|
}
|
|
if !u2.equal(u1) {
|
|
t.Fatalf("unexpected equal(%s, %s) result; got false; want true", u2, u1)
|
|
}
|
|
|
|
u1 = &u128{
|
|
hi: 123,
|
|
lo: 456,
|
|
}
|
|
u2 = &u128{
|
|
hi: 123,
|
|
lo: 456,
|
|
}
|
|
if u1.less(u2) {
|
|
t.Fatalf("less for equal values must return false")
|
|
}
|
|
if u2.less(u1) {
|
|
t.Fatalf("less for equal values must return false")
|
|
}
|
|
if !u1.equal(u2) {
|
|
t.Fatalf("unexpected equal(%s, %s) result; got false; want true", u1, u2)
|
|
}
|
|
if !u2.equal(u1) {
|
|
t.Fatalf("unexpected equal(%s, %s) result; got false; want true", u2, u1)
|
|
}
|
|
|
|
// compare unequal values
|
|
u1 = &u128{
|
|
lo: 456,
|
|
}
|
|
u2 = &u128{
|
|
hi: 123,
|
|
}
|
|
if !u1.less(u2) {
|
|
t.Fatalf("unexpected result for less(%s, %s); got false; want true", u1, u2)
|
|
}
|
|
if u2.less(u1) {
|
|
t.Fatalf("unexpected result for less(%s, %s); got true; want false", u2, u1)
|
|
}
|
|
if u1.equal(u2) {
|
|
t.Fatalf("unexpected result for equal(%s, %s); got true; want false", u1, u2)
|
|
}
|
|
|
|
u1 = &u128{
|
|
hi: 123,
|
|
}
|
|
u2 = &u128{
|
|
hi: 123,
|
|
lo: 456,
|
|
}
|
|
if !u1.less(u2) {
|
|
t.Fatalf("unexpected result for less(%s, %s); got false; want true", u1, u2)
|
|
}
|
|
if u2.less(u1) {
|
|
t.Fatalf("unexpected result for less(%s, %s); got true; want false", u2, u1)
|
|
}
|
|
if u1.equal(u2) {
|
|
t.Fatalf("unexpected result for equal(%s, %s); got true; want false", u1, u2)
|
|
}
|
|
}
|