k9s/internal/tchart/sparkline_int_test.go

135 lines
2.1 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package tchart
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCutSet(t *testing.T) {
uu := map[string]struct {
mm []Metric
w, e int
}{
"empty": {
w: 10,
e: 0,
},
"at": {
mm: make([]Metric, 10),
w: 10,
e: 10,
},
"under": {
mm: make([]Metric, 5),
w: 10,
e: 5,
},
"over": {
mm: make([]Metric, 10),
w: 5,
e: 5,
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
s := NewSparkLine("s")
assert.False(t, s.IsDial())
for _, m := range u.mm {
s.Add(m)
}
s.cutSet(u.w)
assert.Len(t, s.data, u.e)
})
}
}
func TestToBlocks(t *testing.T) {
uu := map[string]struct {
m Metric
s float64
e blocks
}{
"empty": {
e: blocks{},
},
"max_ok": {
m: Metric{S1: 100, S2: 10},
s: 0.5,
e: blocks{
s1: block{full: 6, partial: sparks[2]},
s2: block{full: 0, partial: sparks[5]},
},
},
"max_fault": {
m: Metric{S1: 10, S2: 100},
s: 0.5,
e: blocks{
s1: block{full: 0, partial: sparks[5]},
s2: block{full: 6, partial: sparks[2]},
},
},
"over": {
m: Metric{S1: 22, S2: 999},
s: float64(8*20) / float64(999),
e: blocks{
s1: block{full: 0, partial: sparks[4]},
s2: block{full: 20, partial: sparks[0]},
},
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, toBlocks(u.m, u.s))
})
}
}
func TestComputeMax(t *testing.T) {
uu := map[string]struct {
mm []Metric
e int64
}{
"empty": {
e: 0,
},
"max_ok": {
mm: []Metric{{S1: 100, S2: 10}},
e: 100,
},
"max_fault": {
mm: []Metric{{S1: 100, S2: 1000}},
e: 1000,
},
"many": {
mm: []Metric{
{S1: 100, S2: 1000},
{S1: 110, S2: 1010},
{S1: 120, S2: 1020},
{S1: 130, S2: 1030},
{S1: 140, S2: 1040},
},
e: 1040,
},
}
for k := range uu {
u := uu[k]
s := NewSparkLine("s")
for _, m := range u.mm {
s.Add(m)
}
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, s.computeMax())
})
}
}