k9s/internal/ui/cmd_stack_test.go

77 lines
1.3 KiB
Go

package ui
import (
"fmt"
"testing"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
)
func init() {
zerolog.SetGlobalLevel(zerolog.FatalLevel)
}
func TestCmdStackPushMax(t *testing.T) {
s := NewCmdStack()
for i := 0; i < 20; i++ {
s.Push(fmt.Sprintf("cmd_%d", i))
}
top, ok := s.Top()
assert.True(t, ok)
assert.Equal(t, "cmd_19", top)
}
func TestCmdStackPop(t *testing.T) {
type expect struct {
val string
ok bool
}
uu := []struct {
cmds []string
popCount int
e expect
}{
{[]string{}, 2, expect{"", false}},
{[]string{"a", "b", "c"}, 2, expect{"a", true}},
{[]string{"a", "b", "c"}, 1, expect{"b", true}},
}
for _, u := range uu {
s := NewCmdStack()
for _, v := range u.cmds {
s.Push(v)
}
for i := 0; i < u.popCount; i++ {
s.Pop()
}
top, ok := s.Pop()
assert.Equal(t, u.e.ok, ok)
assert.Equal(t, u.e.val, top)
}
}
func TestCmdStackEmpty(t *testing.T) {
uu := []struct {
cmds []string
popCount int
e bool
}{
{[]string{}, 0, true},
{[]string{"a", "b", "c"}, 0, false},
{[]string{"a", "b", "c"}, 3, true},
}
for _, u := range uu {
s := NewCmdStack()
for _, v := range u.cmds {
s.Push(v)
}
for i := 0; i < u.popCount; i++ {
s.Pop()
}
assert.Equal(t, u.e, s.Empty())
}
}