2026-07-15 17:33:55 +08:00
|
|
|
package diagram
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestLatestMeasurementValueUsesMemberTimestamp(t *testing.T) {
|
|
|
|
|
value, err := latestMeasurementValue([]redis.Z{
|
|
|
|
|
{Member: "100", Score: 999},
|
|
|
|
|
{Member: "300", Score: 12},
|
|
|
|
|
{Member: "200", Score: 500},
|
|
|
|
|
}, "measurement-key")
|
|
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.Equal(t, float64(12), value)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestLatestMeasurementValueRejectsMissingOrInvalidTimestamps(t *testing.T) {
|
|
|
|
|
_, err := latestMeasurementValue(nil, "measurement-key")
|
|
|
|
|
require.Error(t, err)
|
|
|
|
|
|
|
|
|
|
_, err = latestMeasurementValue([]redis.Z{{Member: "invalid", Score: 1}}, "measurement-key")
|
|
|
|
|
require.Error(t, err)
|
|
|
|
|
}
|
2026-07-30 15:32:22 +08:00
|
|
|
|
|
|
|
|
func TestLatestMeasurementValuesReturnsNewestWindow(t *testing.T) {
|
|
|
|
|
values, err := latestMeasurementValues([]redis.Z{
|
|
|
|
|
{Member: "100", Score: 10},
|
|
|
|
|
{Member: "400", Score: 40},
|
|
|
|
|
{Member: "invalid", Score: 999},
|
|
|
|
|
{Member: "200", Score: 20},
|
|
|
|
|
{Member: "300", Score: 30},
|
|
|
|
|
}, "measurement-key", 3)
|
|
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.Equal(t, []float64{40, 30, 20}, values)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestLatestMeasurementValuesReturnsAvailableWindow(t *testing.T) {
|
|
|
|
|
values, err := latestMeasurementValues([]redis.Z{
|
|
|
|
|
{Member: "100", Score: 10},
|
|
|
|
|
{Member: "200", Score: 20},
|
|
|
|
|
}, "measurement-key", 5)
|
|
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.Equal(t, []float64{20, 10}, values)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestLatestMeasurementValuesRejectsInvalidSize(t *testing.T) {
|
|
|
|
|
_, err := latestMeasurementValues([]redis.Z{{Member: "100", Score: 10}}, "measurement-key", 0)
|
|
|
|
|
require.Error(t, err)
|
|
|
|
|
assert.Contains(t, err.Error(), "window size must be greater than 0")
|
|
|
|
|
}
|