zenity/internal/zencmd/mnemonic_test.go
2022-12-20 12:23:21 +00:00

47 lines
821 B
Go

package zencmd
import (
"strings"
"testing"
)
var mnemonicTests = []struct {
data string
want string
}{
{"", ""},
{"abc", "abc"},
{"_abc", `abc`},
{"_a_b_c_", "abc"},
{"a__c", `a_c`},
{"a___c", `a_c`},
{"a____c", `a__c`},
}
func TestStripMnemonic(t *testing.T) {
t.Parallel()
for _, test := range mnemonicTests {
if got := StripMnemonic(test.data); got != test.want {
t.Errorf("StripMnemonic(%q) = %q; want %q", test.data, got, test.want)
}
}
}
func FuzzStripMnemonic(f *testing.F) {
for _, test := range mnemonicTests {
f.Add(test.data)
}
f.Fuzz(func(t *testing.T, s string) {
q := quoteMnemonic(s)
u := StripMnemonic(q)
if s != u {
t.Errorf("strip(quote(%q)) = strip(%q) = %q", s, q, u)
}
})
}
func quoteMnemonic(s string) string {
return strings.ReplaceAll(s, "_", "__")
}