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) } 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") }