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  }