[#88] netmap: fix min aggregator bug, add tests

Signed-off-by: Andrew Danilin <andnilin@gmail.com>
This commit is contained in:
AndrewDanilin 2023-09-12 21:16:06 +03:00 committed by andnilin@gmail.com
parent ac8fc6d440
commit d13062b811
2 changed files with 52 additions and 4 deletions

View file

@ -23,7 +23,7 @@ type (
}
minAgg struct {
min float64
min *float64
}
meanIQRAgg struct {
@ -102,13 +102,17 @@ func (a *meanAgg) Compute() float64 {
}
func (a *minAgg) Add(n float64) {
if a.min == 0 || n < a.min {
a.min = n
if a.min == nil || n < *a.min {
a.min = &n
}
}
func (a *minAgg) Compute() float64 {
return a.min
if a.min == nil {
return 0
}
return *a.min
}
func (a *meanIQRAgg) Add(n float64) {

44
netmap/aggregator_test.go Normal file
View file

@ -0,0 +1,44 @@
package netmap
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestMinAgg(t *testing.T) {
tests := []struct {
vals []float64
res float64
}{
{
vals: []float64{1, 2, 3, 0, 10},
res: 0,
},
{
vals: []float64{10, 0, 10, 0},
res: 0,
},
{
vals: []float64{0, 1, 2, 3, 10},
res: 0,
},
{
vals: []float64{0, 0, 0, 0},
res: 0,
},
{
vals: []float64{10, 10, 10, 10},
res: 10,
},
}
for _, test := range tests {
a := newMinAgg()
for _, val := range test.vals {
a.Add(val)
}
require.Equal(t, test.res, a.Compute())
}
}