forked from elves/elvish
/
listing_testutils.go
38 lines (32 loc) · 926 Bytes
/
listing_testutils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package eddefs
import (
"reflect"
"testing"
"github.com/elves/elvish/edit/ui"
)
type ListingShown struct {
Header string
Content ui.Styled
}
type ListingProviderFilterTest struct {
Filter string
WantShowns []ListingShown
}
func TestListingProviderFilter(t *testing.T, name string, ls ListingProvider, testcases []ListingProviderFilterTest) {
for _, testcase := range testcases {
ls.Filter(testcase.Filter)
l := ls.Len()
if l != len(testcase.WantShowns) {
t.Errorf("%s.Len() -> %d, want %d (filter was %q)",
name, l, len(testcase.WantShowns), testcase.Filter)
} else {
for i, want := range testcase.WantShowns {
header, content := ls.Show(i)
if header != want.Header || !reflect.DeepEqual(content, want.Content) {
t.Errorf("%s.Show(%d) => (%v, %v), want (%v, %v) (filter was %q)",
name, i, header, content, want.Header, want.Content, testcase.Filter)
}
}
}
}
}