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 }