github.com/xyproto/u-root@v6.0.1-0.20200302025726-5528e0c77a3c+incompatible/cmds/core/elvish/edit/ui/key_test.go (about)

     1  package ui
     2  
     3  import "testing"
     4  
     5  var parseKeyTests = []struct {
     6  	s       string
     7  	wantKey Key
     8  }{
     9  	// Alt- keys are case-sensitive.
    10  	{"a-x", Key{'x', Alt}},
    11  	{"a-X", Key{'X', Alt}},
    12  
    13  	// Ctrl- keys are case-insensitive.
    14  	{"C-x", Key{'X', Ctrl}},
    15  	{"C-X", Key{'X', Ctrl}},
    16  
    17  	// + is the same as -.
    18  	{"C+X", Key{'X', Ctrl}},
    19  
    20  	// Full names and alternative names can also be used.
    21  	{"M-x", Key{'x', Alt}},
    22  	{"Meta-x", Key{'x', Alt}},
    23  
    24  	// Multiple modifiers can appear in any order.
    25  	{"Alt-Ctrl-Delete", Key{Delete, Alt | Ctrl}},
    26  	{"Ctrl-Alt-Delete", Key{Delete, Alt | Ctrl}},
    27  }
    28  
    29  func TestParseKey(t *testing.T) {
    30  	for _, test := range parseKeyTests {
    31  		key, err := parseKey(test.s)
    32  		if key != test.wantKey {
    33  			t.Errorf("ParseKey(%q) => %v, want %v", test.s, key, test.wantKey)
    34  		}
    35  		if err != nil {
    36  			t.Errorf("ParseKey(%q) => error %v, want nil", test.s, err)
    37  		}
    38  	}
    39  }