mirror of https://github.com/grafana/loki
chore(dataobj): support computation of min/max values in pages and columns (#16015)
parent
c99771efb8
commit
5ccc6790cb
@ -0,0 +1,78 @@ |
|||||||
|
package dataset_test |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/require" |
||||||
|
|
||||||
|
"github.com/grafana/loki/v3/pkg/dataobj/internal/dataset" |
||||||
|
"github.com/grafana/loki/v3/pkg/dataobj/internal/metadata/datasetmd" |
||||||
|
) |
||||||
|
|
||||||
|
func TestValue_MarshalBinary(t *testing.T) { |
||||||
|
t.Run("Null", func(t *testing.T) { |
||||||
|
var expect dataset.Value |
||||||
|
require.True(t, expect.IsNil()) |
||||||
|
|
||||||
|
b, err := expect.MarshalBinary() |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
var actual dataset.Value |
||||||
|
require.NoError(t, actual.UnmarshalBinary(b)) |
||||||
|
require.True(t, actual.IsNil()) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Int64Value", func(t *testing.T) { |
||||||
|
expect := dataset.Int64Value(-1234) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_INT64, expect.Type()) |
||||||
|
|
||||||
|
b, err := expect.MarshalBinary() |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
var actual dataset.Value |
||||||
|
require.NoError(t, actual.UnmarshalBinary(b)) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_INT64, actual.Type()) |
||||||
|
require.Equal(t, expect.Int64(), actual.Int64()) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Uint64Value", func(t *testing.T) { |
||||||
|
expect := dataset.Uint64Value(1234) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_UINT64, expect.Type()) |
||||||
|
|
||||||
|
b, err := expect.MarshalBinary() |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
var actual dataset.Value |
||||||
|
require.NoError(t, actual.UnmarshalBinary(b)) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_UINT64, actual.Type()) |
||||||
|
require.Equal(t, expect.Uint64(), actual.Uint64()) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("StringValue", func(t *testing.T) { |
||||||
|
t.Run("Empty", func(t *testing.T) { |
||||||
|
expect := dataset.StringValue("") |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_STRING, expect.Type()) |
||||||
|
|
||||||
|
b, err := expect.MarshalBinary() |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
var actual dataset.Value |
||||||
|
require.NoError(t, actual.UnmarshalBinary(b)) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_STRING, actual.Type()) |
||||||
|
require.Equal(t, expect.String(), actual.String()) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("Non-empty", func(t *testing.T) { |
||||||
|
expect := dataset.StringValue("hello, world!") |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_STRING, expect.Type()) |
||||||
|
|
||||||
|
b, err := expect.MarshalBinary() |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
var actual dataset.Value |
||||||
|
require.NoError(t, actual.UnmarshalBinary(b)) |
||||||
|
require.Equal(t, datasetmd.VALUE_TYPE_STRING, actual.Type()) |
||||||
|
require.Equal(t, expect.String(), actual.String()) |
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
Loading…
Reference in new issue