65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package view
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
|
|
"github.com/sahilm/fuzzy"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func matchTag(i int, s string) string {
|
|
return `<<<"search_` + strconv.Itoa(i) + `">>>` + s + `<<<"">>>`
|
|
}
|
|
|
|
func TestLiveView_linesWithRegions(t *testing.T) {
|
|
uu := map[string]struct {
|
|
lines []string
|
|
matches fuzzy.Matches
|
|
e []string
|
|
}{
|
|
"empty-lines": {
|
|
e: []string{},
|
|
},
|
|
"no-match": {
|
|
lines: []string{"bar"},
|
|
e: []string{"bar"},
|
|
},
|
|
"single-match": {
|
|
lines: []string{"foo", "bar", "baz"},
|
|
matches: fuzzy.Matches{
|
|
{Index: 1, MatchedIndexes: []int{0, 3}},
|
|
},
|
|
e: []string{"foo", matchTag(0, "bar"), "baz"},
|
|
},
|
|
"multiple-matches": {
|
|
lines: []string{"foo", "bar", "baz"},
|
|
matches: fuzzy.Matches{
|
|
{Index: 1, MatchedIndexes: []int{0, 3}},
|
|
{Index: 2, MatchedIndexes: []int{0, 3}},
|
|
},
|
|
e: []string{"foo", matchTag(0, "bar"), matchTag(1, "baz")},
|
|
},
|
|
"multiple-matches-same-line": {
|
|
lines: []string{"foosfoo baz", "dfbarfoos bar"},
|
|
matches: fuzzy.Matches{
|
|
{Index: 0, MatchedIndexes: []int{0, 3}},
|
|
{Index: 0, MatchedIndexes: []int{4, 7}},
|
|
{Index: 1, MatchedIndexes: []int{5, 8}},
|
|
},
|
|
e: []string{
|
|
matchTag(0, "foo") + "s" + matchTag(1, "foo") + " baz",
|
|
"dfbar" + matchTag(2, "foo") + "s bar",
|
|
},
|
|
},
|
|
}
|
|
var v LiveView
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
t.Parallel()
|
|
assert.Equal(t, u.e, v.linesWithRegions(u.lines, u.matches))
|
|
})
|
|
}
|
|
}
|