96 lines
1.7 KiB
Go
96 lines
1.7 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package model
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/sahilm/fuzzy"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_rxFilter(t *testing.T) {
|
|
uu := map[string]struct {
|
|
q string
|
|
lines []string
|
|
e fuzzy.Matches
|
|
}{
|
|
"empty-lines": {
|
|
q: "foo",
|
|
e: fuzzy.Matches{},
|
|
},
|
|
"no-match": {
|
|
q: "foo",
|
|
lines: []string{"bar"},
|
|
e: fuzzy.Matches{},
|
|
},
|
|
"single-match": {
|
|
q: "foo",
|
|
lines: []string{"foo", "bar", "baz"},
|
|
e: fuzzy.Matches{
|
|
{
|
|
Str: "foo",
|
|
Index: 0,
|
|
MatchedIndexes: []int{0, 1, 2},
|
|
},
|
|
},
|
|
},
|
|
"start-rx-match": {
|
|
q: "(?i)^foo",
|
|
lines: []string{"foo", "fob", "barfoo"},
|
|
e: fuzzy.Matches{
|
|
{
|
|
Str: "(?i)^foo",
|
|
Index: 0,
|
|
MatchedIndexes: []int{0, 1, 2},
|
|
},
|
|
},
|
|
},
|
|
"end-rx-match": {
|
|
q: "foo$",
|
|
lines: []string{"foo", "fob", "barfoo"},
|
|
e: fuzzy.Matches{
|
|
{
|
|
Str: "foo$",
|
|
Index: 0,
|
|
MatchedIndexes: []int{0, 1, 2},
|
|
},
|
|
{
|
|
Str: "foo$",
|
|
Index: 2,
|
|
MatchedIndexes: []int{3, 4, 5},
|
|
},
|
|
},
|
|
},
|
|
"multiple-matches": {
|
|
q: "foo",
|
|
lines: []string{"foo", "bar", "foo bar foo", "baz"},
|
|
e: fuzzy.Matches{
|
|
{
|
|
Str: "foo",
|
|
Index: 0,
|
|
MatchedIndexes: []int{0, 1, 2},
|
|
},
|
|
{
|
|
Str: "foo",
|
|
Index: 2,
|
|
MatchedIndexes: []int{0, 1, 2},
|
|
},
|
|
{
|
|
Str: "foo",
|
|
Index: 2,
|
|
MatchedIndexes: []int{8, 9, 10},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
assert.Equal(t, u.e, rxFilter(u.q, u.lines))
|
|
})
|
|
}
|
|
}
|