56 lines
2.0 KiB
Go
56 lines
2.0 KiB
Go
package ui
|
|
|
|
import (
|
|
"github.com/jroimartin/gocui"
|
|
"testing"
|
|
)
|
|
|
|
func TestGetKeybinding(t *testing.T) {
|
|
var table = []struct {
|
|
input string
|
|
key gocui.Key
|
|
modifier gocui.Modifier
|
|
errStr string
|
|
}{
|
|
{"ctrl + A", gocui.KeyCtrlA, gocui.ModNone, ""},
|
|
{"Ctrl + a", gocui.KeyCtrlA, gocui.ModNone, ""},
|
|
{"Ctl + a", gocui.KeyCtrlA, gocui.ModNone, ""},
|
|
{"ctl + A", gocui.KeyCtrlA, gocui.ModNone, ""},
|
|
{"f2", gocui.KeyF2, gocui.ModNone, ""},
|
|
{"ctrl + [", gocui.KeyCtrlLsqBracket, gocui.ModNone, ""},
|
|
{" ctrl + ] ", gocui.KeyCtrlRsqBracket, gocui.ModNone, ""},
|
|
{"ctrl + /", gocui.KeyCtrlSlash, gocui.ModNone, ""},
|
|
{"ctrl + \\", gocui.KeyCtrlBackslash, gocui.ModNone, ""},
|
|
// {"left", gocui.KeyArrowLeft, gocui.ModNone, ""},
|
|
{"PageUp", gocui.KeyPgup, gocui.ModNone, ""},
|
|
{"PgUp", gocui.KeyPgup, gocui.ModNone, ""},
|
|
{"pageup", gocui.KeyPgup, gocui.ModNone, ""},
|
|
{"pgup", gocui.KeyPgup, gocui.ModNone, ""},
|
|
{"tab", gocui.KeyTab, gocui.ModNone, ""},
|
|
{"escape", gocui.KeyEsc, gocui.ModNone, ""},
|
|
{"enter", gocui.KeyEnter, gocui.ModNone, ""},
|
|
{"space", gocui.KeySpace, gocui.ModNone, ""},
|
|
{"ctrl + alt + z", gocui.KeyCtrlZ, gocui.ModAlt, ""},
|
|
{"f22", 0, gocui.ModNone, "unsupported keybinding: KeyF22"},
|
|
{"ctrl + alt + !", 0, gocui.ModAlt, "unsupported keybinding: KeyCtrl! (+1)"},
|
|
}
|
|
|
|
for idx, trial := range table {
|
|
actualKey, actualErr := getKeybinding(trial.input)
|
|
|
|
if actualKey.value != trial.key {
|
|
t.Errorf("Expected key '%+v' but got '%+v' (trial %d)", trial.key, actualKey, idx)
|
|
}
|
|
|
|
if actualKey.modifier != trial.modifier {
|
|
t.Errorf("Expected modifier '%+v' but got '%+v' (trial %d)", trial.modifier, actualKey, idx)
|
|
}
|
|
|
|
if actualErr == nil && trial.errStr != "" {
|
|
t.Errorf("Expected error message of '%s' but got no message (trial %d)", trial.errStr, idx)
|
|
} else if actualErr != nil && actualErr.Error() != trial.errStr {
|
|
t.Errorf("Expected error message '%s' but got '%s' (trial %d)", trial.errStr, actualErr.Error(), idx)
|
|
}
|
|
}
|
|
}
|