src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/edit/filter/highlight_test.go (about)

     1  package filter_test
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"src.elv.sh/pkg/edit/filter"
     8  	"src.elv.sh/pkg/ui"
     9  )
    10  
    11  var highlightTests = []struct {
    12  	name string
    13  	q    string
    14  	want ui.Text
    15  }{
    16  	{
    17  		name: "quoted string",
    18  		q:    `'a'`,
    19  		want: ui.T(`'a'`, ui.FgYellow),
    20  	},
    21  	{
    22  		name: "unsupported primary",
    23  		q:    `$a`,
    24  		want: ui.T(`$a`, ui.FgRed),
    25  	},
    26  	{
    27  		name: "supported list form",
    28  		q:    `[re a]`,
    29  		want: ui.Concat(
    30  			ui.T("[", ui.Bold), ui.T("re", ui.FgGreen),
    31  			ui.T(" a"), ui.T("]", ui.Bold)),
    32  	},
    33  	{
    34  		name: "empty list form",
    35  		q:    `[]`,
    36  		want: ui.T("[]", ui.FgRed),
    37  	},
    38  	{
    39  		name: "unsupported list form",
    40  		q:    `[bad]`,
    41  		want: ui.Concat(
    42  			ui.T("[", ui.Bold), ui.T("bad", ui.FgRed), ui.T("]", ui.Bold)),
    43  	},
    44  	{
    45  		name: "unsupported primary as head of list form",
    46  		q:    `[$a]`,
    47  		want: ui.Concat(
    48  			ui.T("[", ui.Bold), ui.T("$a", ui.FgRed), ui.T("]", ui.Bold)),
    49  	},
    50  }
    51  
    52  func TestHighlight(t *testing.T) {
    53  	for _, test := range highlightTests {
    54  		t.Run(test.name, func(t *testing.T) {
    55  			got, _ := filter.Highlight(test.q)
    56  			if !reflect.DeepEqual(got, test.want) {
    57  				t.Errorf("got %s, want %s", got, test.want)
    58  			}
    59  		})
    60  	}
    61  }