91 lines
1.7 KiB
Go
91 lines
1.7 KiB
Go
package model_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/derailed/k9s/internal/model"
|
|
"github.com/sahilm/fuzzy"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewText(t *testing.T) {
|
|
m := model.NewText()
|
|
|
|
lis := textLis{}
|
|
m.AddListener(&lis)
|
|
|
|
m.SetText("Hello World\nBumbleBeeTuna")
|
|
|
|
assert.Equal(t, 1, lis.changed)
|
|
assert.Equal(t, 2, lis.lines)
|
|
assert.Equal(t, 0, lis.filtered)
|
|
assert.Equal(t, 0, lis.matches)
|
|
}
|
|
|
|
func TestTextFilterRXMatch(t *testing.T) {
|
|
m := model.NewText()
|
|
|
|
lis := textLis{}
|
|
m.AddListener(&lis)
|
|
|
|
m.SetText("Hello World\nBumbleBeeTuna")
|
|
m.Filter("world")
|
|
|
|
assert.Equal(t, 1, lis.changed)
|
|
assert.Equal(t, 2, lis.lines)
|
|
assert.Equal(t, 1, lis.filtered)
|
|
assert.Equal(t, 1, lis.matches)
|
|
assert.Equal(t, 6, lis.index)
|
|
}
|
|
|
|
func TestTextFilterFuzzyMatch(t *testing.T) {
|
|
m := model.NewText()
|
|
|
|
lis := textLis{}
|
|
m.AddListener(&lis)
|
|
|
|
m.SetText("Hello World\nBumbleBeeTuna")
|
|
m.Filter("-f world")
|
|
|
|
assert.Equal(t, 1, lis.changed)
|
|
assert.Equal(t, 2, lis.lines)
|
|
assert.Equal(t, 1, lis.filtered)
|
|
assert.Equal(t, 1, lis.matches)
|
|
assert.Equal(t, 6, lis.index)
|
|
}
|
|
|
|
func TestTextFilterNoMatch(t *testing.T) {
|
|
m := model.NewText()
|
|
|
|
lis := textLis{}
|
|
m.AddListener(&lis)
|
|
|
|
m.SetText("Hello World\nBumbleBeeTuna")
|
|
m.Filter("blee")
|
|
|
|
assert.Equal(t, 1, lis.changed)
|
|
assert.Equal(t, 2, lis.lines)
|
|
assert.Equal(t, 1, lis.filtered)
|
|
assert.Equal(t, 0, lis.matches)
|
|
assert.Equal(t, 0, lis.index)
|
|
}
|
|
|
|
// Helpers...
|
|
|
|
type textLis struct {
|
|
changed, filtered, matches, lines, index int
|
|
}
|
|
|
|
func (l *textLis) TextChanged(ll []string) {
|
|
l.lines = len(ll)
|
|
l.changed++
|
|
}
|
|
|
|
func (l *textLis) TextFiltered(ll []string, mm fuzzy.Matches) {
|
|
l.matches = len(mm)
|
|
l.filtered++
|
|
if len(mm) > 0 && len(mm[0].MatchedIndexes) > 0 {
|
|
l.index = mm[0].MatchedIndexes[0]
|
|
}
|
|
}
|