github.com/oweisse/u-root@v0.0.0-20181109060735-d005ad25fef1/cmds/elvish/edit/eddefs/listing_testutils.go (about) 1 package eddefs 2 3 import ( 4 "fmt" 5 "reflect" 6 7 "github.com/u-root/u-root/cmds/elvish/edit/ui" 8 ) 9 10 type ListingShown struct { 11 Header string 12 Content ui.Styled 13 } 14 15 type ListingProviderFilterTest struct { 16 Filter string 17 WantShowns []ListingShown 18 } 19 20 func TestListingProviderFilter(name string, ls ListingProvider, testcases []ListingProviderFilterTest) error { 21 for _, testcase := range testcases { 22 ls.Filter(testcase.Filter) 23 24 l := ls.Len() 25 if l != len(testcase.WantShowns) { 26 return fmt.Errorf("%s.Len() -> %d, want %d (filter was %q)", 27 name, l, len(testcase.WantShowns), testcase.Filter) 28 } else { 29 for i, want := range testcase.WantShowns { 30 header, content := ls.Show(i) 31 if header != want.Header || !reflect.DeepEqual(content, want.Content) { 32 return fmt.Errorf("%s.Show(%d) => (%v, %v), want (%v, %v) (filter was %q)", 33 name, i, header, content, want.Header, want.Content, testcase.Filter) 34 } 35 } 36 } 37 } 38 return nil 39 }