k9s/internal/model1/delta_test.go

267 lines
5.2 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package model1_test
import (
"testing"
"github.com/derailed/k9s/internal/model1"
"github.com/stretchr/testify/assert"
)
func TestDeltaLabelize(t *testing.T) {
uu := map[string]struct {
o model1.Row
n model1.Row
e model1.DeltaRow
}{
"same": {
o: model1.Row{
Fields: model1.Fields{"a", "b", "blee=fred,doh=zorg"},
},
n: model1.Row{
Fields: model1.Fields{"a", "b", "blee=fred1,doh=zorg"},
},
e: model1.DeltaRow{"", "", "fred", "zorg"},
},
}
hh := model1.Header{
model1.HeaderColumn{Name: "A"},
model1.HeaderColumn{Name: "B"},
model1.HeaderColumn{Name: "C"},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
d := model1.NewDeltaRow(u.o, u.n, hh)
d = d.Labelize([]int{0, 1}, 2)
assert.Equal(t, u.e, d)
})
}
}
func TestDeltaCustomize(t *testing.T) {
uu := map[string]struct {
r1, r2 model1.Row
cols []int
e model1.DeltaRow
}{
"same": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
cols: []int{0, 1, 2},
e: model1.DeltaRow{"", "", ""},
},
"empty": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
e: model1.DeltaRow{},
},
"diff-full": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a1", "b1", "c1"},
},
cols: []int{0, 1, 2},
e: model1.DeltaRow{"a", "b", "c"},
},
"diff-reverse": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a1", "b1", "c1"},
},
cols: []int{2, 1, 0},
e: model1.DeltaRow{"c", "b", "a"},
},
"diff-skip": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a1", "b1", "c1"},
},
cols: []int{2, 0},
e: model1.DeltaRow{"c", "a"},
},
"diff-missing": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a1", "b1", "c1"},
},
cols: []int{2, 10, 0},
e: model1.DeltaRow{"c", "", "a"},
},
"diff-negative": {
r1: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
r2: model1.Row{
Fields: model1.Fields{"a1", "b1", "c1"},
},
cols: []int{2, -1, 0},
e: model1.DeltaRow{"c", "", "a"},
},
}
hh := model1.Header{
model1.HeaderColumn{Name: "A"},
model1.HeaderColumn{Name: "B"},
model1.HeaderColumn{Name: "C"},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
d := model1.NewDeltaRow(u.r1, u.r2, hh)
out := make(model1.DeltaRow, len(u.cols))
d.Customize(u.cols, out)
assert.Equal(t, u.e, out)
})
}
}
func TestDeltaNew(t *testing.T) {
uu := map[string]struct {
o model1.Row
n model1.Row
blank bool
e model1.DeltaRow
}{
"same": {
o: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
n: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
blank: true,
e: model1.DeltaRow{"", "", ""},
},
"diff": {
o: model1.Row{
Fields: model1.Fields{"a1", "b", "c"},
},
n: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
e: model1.DeltaRow{"a1", "", ""},
},
"diff2": {
o: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
n: model1.Row{
Fields: model1.Fields{"a", "b1", "c"},
},
e: model1.DeltaRow{"", "b", ""},
},
"diffLast": {
o: model1.Row{
Fields: model1.Fields{"a", "b", "c"},
},
n: model1.Row{
Fields: model1.Fields{"a", "b", "c1"},
},
e: model1.DeltaRow{"", "", "c"},
},
}
hh := model1.Header{
model1.HeaderColumn{Name: "A"},
model1.HeaderColumn{Name: "B"},
model1.HeaderColumn{Name: "C"},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
d := model1.NewDeltaRow(u.o, u.n, hh)
assert.Equal(t, u.e, d)
assert.Equal(t, u.blank, d.IsBlank())
})
}
}
func TestDeltaBlank(t *testing.T) {
uu := map[string]struct {
r model1.DeltaRow
e bool
}{
"empty": {
r: model1.DeltaRow{},
e: true,
},
"blank": {
r: model1.DeltaRow{"", "", ""},
e: true,
},
"notblank": {
r: model1.DeltaRow{"", "", "z"},
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, u.r.IsBlank())
})
}
}
func TestDeltaDiff(t *testing.T) {
uu := map[string]struct {
d1, d2 model1.DeltaRow
ageCol int
e bool
}{
"empty": {
d1: model1.DeltaRow{"f1", "f2", "f3"},
ageCol: 2,
e: true,
},
"same": {
d1: model1.DeltaRow{"f1", "f2", "f3"},
d2: model1.DeltaRow{"f1", "f2", "f3"},
ageCol: -1,
},
"diff": {
d1: model1.DeltaRow{"f1", "f2", "f3"},
d2: model1.DeltaRow{"f1", "f2", "f13"},
ageCol: -1,
e: true,
},
"diff-age-first": {
d1: model1.DeltaRow{"f1", "f2", "f3"},
d2: model1.DeltaRow{"f1", "f2", "f13"},
ageCol: 0,
e: true,
},
"diff-age-last": {
d1: model1.DeltaRow{"f1", "f2", "f3"},
d2: model1.DeltaRow{"f1", "f2", "f13"},
ageCol: 2,
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, u.d1.Diff(u.d2, u.ageCol))
})
}
}