222 lines
4.3 KiB
Go
222 lines
4.3 KiB
Go
package render_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/derailed/k9s/internal/render"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestDeltaCustomize(t *testing.T) {
|
|
uu := map[string]struct {
|
|
r1, r2 render.Row
|
|
cols []int
|
|
e render.DeltaRow
|
|
}{
|
|
"same": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
cols: []int{0, 1, 2},
|
|
e: render.DeltaRow{"", "", ""},
|
|
},
|
|
"empty": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
e: render.DeltaRow{},
|
|
},
|
|
"diff-full": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a1", "b1", "c1"},
|
|
},
|
|
cols: []int{0, 1, 2},
|
|
e: render.DeltaRow{"a", "b", "c"},
|
|
},
|
|
"diff-reverse": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a1", "b1", "c1"},
|
|
},
|
|
cols: []int{2, 1, 0},
|
|
e: render.DeltaRow{"c", "b", "a"},
|
|
},
|
|
"diff-skip": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a1", "b1", "c1"},
|
|
},
|
|
cols: []int{2, 0},
|
|
e: render.DeltaRow{"c", "a"},
|
|
},
|
|
"diff-missing": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a1", "b1", "c1"},
|
|
},
|
|
cols: []int{2, 10, 0},
|
|
e: render.DeltaRow{"c", "", "a"},
|
|
},
|
|
"diff-negative": {
|
|
r1: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
r2: render.Row{
|
|
Fields: render.Fields{"a1", "b1", "c1"},
|
|
},
|
|
cols: []int{2, -1, 0},
|
|
e: render.DeltaRow{"c", "", "a"},
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
d := render.NewDeltaRow(u.r1, u.r2, false)
|
|
out := make(render.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 render.Row
|
|
n render.Row
|
|
blank bool
|
|
e render.DeltaRow
|
|
}{
|
|
"same": {
|
|
o: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
n: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
blank: true,
|
|
e: render.DeltaRow{"", "", ""},
|
|
},
|
|
"diff": {
|
|
o: render.Row{
|
|
Fields: render.Fields{"a1", "b", "c"},
|
|
},
|
|
n: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
e: render.DeltaRow{"a1", "", ""},
|
|
},
|
|
"diff2": {
|
|
o: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
n: render.Row{
|
|
Fields: render.Fields{"a", "b1", "c"},
|
|
},
|
|
e: render.DeltaRow{"", "b", ""},
|
|
},
|
|
"diffLast": {
|
|
o: render.Row{
|
|
Fields: render.Fields{"a", "b", "c"},
|
|
},
|
|
n: render.Row{
|
|
Fields: render.Fields{"a", "b", "c1"},
|
|
},
|
|
e: render.DeltaRow{"", "", "c"},
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
d := render.NewDeltaRow(u.o, u.n, false)
|
|
assert.Equal(t, u.e, d)
|
|
assert.Equal(t, u.blank, d.IsBlank())
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestDeltaBlank(t *testing.T) {
|
|
uu := map[string]struct {
|
|
r render.DeltaRow
|
|
e bool
|
|
}{
|
|
"empty": {
|
|
r: render.DeltaRow{},
|
|
e: true,
|
|
},
|
|
"blank": {
|
|
r: render.DeltaRow{"", "", ""},
|
|
e: true,
|
|
},
|
|
"notblank": {
|
|
r: render.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 render.DeltaRow
|
|
ageCol int
|
|
e bool
|
|
}{
|
|
"empty": {
|
|
d1: render.DeltaRow{"f1", "f2", "f3"},
|
|
ageCol: 2,
|
|
e: true,
|
|
},
|
|
"same": {
|
|
d1: render.DeltaRow{"f1", "f2", "f3"},
|
|
d2: render.DeltaRow{"f1", "f2", "f3"},
|
|
ageCol: -1,
|
|
},
|
|
"diff": {
|
|
d1: render.DeltaRow{"f1", "f2", "f3"},
|
|
d2: render.DeltaRow{"f1", "f2", "f13"},
|
|
ageCol: -1,
|
|
e: true,
|
|
},
|
|
"diff-age-first": {
|
|
d1: render.DeltaRow{"f1", "f2", "f3"},
|
|
d2: render.DeltaRow{"f1", "f2", "f13"},
|
|
ageCol: 0,
|
|
e: true,
|
|
},
|
|
"diff-age-last": {
|
|
d1: render.DeltaRow{"f1", "f2", "f3"},
|
|
d2: render.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))
|
|
})
|
|
}
|
|
}
|