Files
math/continuous_averager_test.go
T

55 lines
1.1 KiB
Go
Raw Normal View History

2025-08-18 13:18:19 -05:00
// Copyright (C) 2019-2024, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package math
import (
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestAverager(t *testing.T) {
require := require.New(t)
halflife := time.Second
currentTime := time.Now()
a := NewSyncAverager(NewAverager(0, halflife, currentTime))
require.Zero(a.Read())
currentTime = currentTime.Add(halflife)
a.Observe(1, currentTime)
require.Equal(1.0/1.5, a.Read())
}
func TestAveragerTimeTravel(t *testing.T) {
require := require.New(t)
halflife := time.Second
currentTime := time.Now()
a := NewSyncAverager(NewAverager(1, halflife, currentTime))
require.Equal(float64(1), a.Read())
currentTime = currentTime.Add(-halflife)
a.Observe(0, currentTime)
require.Equal(1.0/1.5, a.Read())
}
func TestUninitializedAverager(t *testing.T) {
require := require.New(t)
halfLife := time.Second
currentTime := time.Now()
firstObservation := float64(10)
a := NewUninitializedAverager(halfLife)
require.Zero(a.Read())
a.Observe(firstObservation, currentTime)
require.Equal(firstObservation, a.Read())
}