mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
test(ioscompanion): cover keymap branches and paste-chord constants
This commit is contained in:
1 parent
68affe4a1c
commit
9253a67abc
1 file changed
+209
@@ -0,0 +1,209 @@
|
||||
package ioscompanion
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCharKeyLetters(t *testing.T) {
|
||||
cases := []struct {
|
||||
r rune
|
||||
usage uint32
|
||||
shift bool
|
||||
}{
|
||||
{'a', usageA, false},
|
||||
{'z', usageA + 25, false},
|
||||
{'m', usageA + 12, false},
|
||||
{'A', usageA, true},
|
||||
{'Z', usageA + 25, true},
|
||||
{'M', usageA + 12, true},
|
||||
}
|
||||
for _, c := range cases {
|
||||
press, ok := charKey(c.r)
|
||||
if !ok {
|
||||
t.Fatalf("charKey(%q) reported unmappable", c.r)
|
||||
}
|
||||
if press.Usage != c.usage || press.Shift != c.shift {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want {%d,%v}", c.r, press.Usage, press.Shift, c.usage, c.shift)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharKeyDigits(t *testing.T) {
|
||||
cases := []struct {
|
||||
r rune
|
||||
usage uint32
|
||||
}{
|
||||
{'1', usage1},
|
||||
{'2', usage1 + 1},
|
||||
{'3', usage1 + 2},
|
||||
{'4', usage1 + 3},
|
||||
{'5', usage1 + 4},
|
||||
{'6', usage1 + 5},
|
||||
{'7', usage1 + 6},
|
||||
{'8', usage1 + 7},
|
||||
{'9', usage1 + 8},
|
||||
{'0', usage0},
|
||||
}
|
||||
for _, c := range cases {
|
||||
press, ok := charKey(c.r)
|
||||
if !ok {
|
||||
t.Fatalf("charKey(%q) reported unmappable", c.r)
|
||||
}
|
||||
if press.Usage != c.usage || press.Shift {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want {%d,false}", c.r, press.Usage, press.Shift, c.usage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharKeyWhitespace(t *testing.T) {
|
||||
cases := []struct {
|
||||
r rune
|
||||
usage uint32
|
||||
}{
|
||||
{' ', usageSpace},
|
||||
{'\n', usageReturn},
|
||||
{'\t', usageTab},
|
||||
}
|
||||
for _, c := range cases {
|
||||
press, ok := charKey(c.r)
|
||||
if !ok {
|
||||
t.Fatalf("charKey(%q) reported unmappable", c.r)
|
||||
}
|
||||
if press.Usage != c.usage || press.Shift {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want {%d,false}", c.r, press.Usage, press.Shift, c.usage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharKeyUnshiftedSymbols(t *testing.T) {
|
||||
cases := []struct {
|
||||
r rune
|
||||
usage uint32
|
||||
}{
|
||||
{'-', usageMinus},
|
||||
{'=', usageEqual},
|
||||
{'[', usageLeftBracket},
|
||||
{']', usageRightBracket},
|
||||
{'\\', usageBackslash},
|
||||
{';', usageSemicolon},
|
||||
{'\'', usageApostrophe},
|
||||
{'`', usageGrave},
|
||||
{',', usageComma},
|
||||
{'.', usagePeriod},
|
||||
{'/', usageSlash},
|
||||
}
|
||||
for _, c := range cases {
|
||||
press, ok := charKey(c.r)
|
||||
if !ok {
|
||||
t.Fatalf("charKey(%q) reported unmappable", c.r)
|
||||
}
|
||||
if press.Usage != c.usage || press.Shift {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want {%d,false}", c.r, press.Usage, press.Shift, c.usage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharKeyShiftedSymbols(t *testing.T) {
|
||||
cases := []struct {
|
||||
r rune
|
||||
usage uint32
|
||||
}{
|
||||
{'!', usage1},
|
||||
{'@', usage1 + 1},
|
||||
{'#', usage1 + 2},
|
||||
{'$', usage1 + 3},
|
||||
{'%', usage1 + 4},
|
||||
{'^', usage1 + 5},
|
||||
{'&', usage1 + 6},
|
||||
{'*', usage1 + 7},
|
||||
{'(', usage1 + 8},
|
||||
{')', usage0},
|
||||
{'_', usageMinus},
|
||||
{'+', usageEqual},
|
||||
{'{', usageLeftBracket},
|
||||
{'}', usageRightBracket},
|
||||
{'|', usageBackslash},
|
||||
{':', usageSemicolon},
|
||||
{'"', usageApostrophe},
|
||||
{'~', usageGrave},
|
||||
{'<', usageComma},
|
||||
{'>', usagePeriod},
|
||||
{'?', usageSlash},
|
||||
}
|
||||
for _, c := range cases {
|
||||
press, ok := charKey(c.r)
|
||||
if !ok {
|
||||
t.Fatalf("charKey(%q) reported unmappable", c.r)
|
||||
}
|
||||
if press.Usage != c.usage || !press.Shift {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want {%d,true}", c.r, press.Usage, press.Shift, c.usage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharKeyUnmappable(t *testing.T) {
|
||||
for _, r := range []rune{'é', '世', '🙂', '\x00'} {
|
||||
if press, ok := charKey(r); ok {
|
||||
t.Errorf("charKey(%q) = {%d,%v}, want unmappable", r, press.Usage, press.Shift)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTypeString(t *testing.T) {
|
||||
presses, skipped := typeString("Ab1!")
|
||||
want := []KeyPress{
|
||||
{Usage: usageA, Shift: true},
|
||||
{Usage: usageA + 1},
|
||||
{Usage: usage1},
|
||||
{Usage: usage1, Shift: true},
|
||||
}
|
||||
if !reflect.DeepEqual(presses, want) {
|
||||
t.Errorf("presses = %+v, want %+v", presses, want)
|
||||
}
|
||||
if len(skipped) != 0 {
|
||||
t.Errorf("skipped = %v, want none", skipped)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTypeStringSkipsUnmappableInOrder(t *testing.T) {
|
||||
presses, skipped := typeString("café 🙂x")
|
||||
wantPresses := []KeyPress{
|
||||
{Usage: usageA + 2},
|
||||
{Usage: usageA},
|
||||
{Usage: usageA + 5},
|
||||
{Usage: usageSpace},
|
||||
{Usage: usageA + 23},
|
||||
}
|
||||
if !reflect.DeepEqual(presses, wantPresses) {
|
||||
t.Errorf("presses = %+v, want %+v", presses, wantPresses)
|
||||
}
|
||||
wantSkipped := []rune{'é', '🙂'}
|
||||
if !reflect.DeepEqual(skipped, wantSkipped) {
|
||||
t.Errorf("skipped = %q, want %q", skipped, wantSkipped)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBackspaces(t *testing.T) {
|
||||
if got := backspaces(0); len(got) != 0 {
|
||||
t.Errorf("backspaces(0) = %v, want empty", got)
|
||||
}
|
||||
got := backspaces(3)
|
||||
want := []KeyPress{
|
||||
{Usage: usageBackspace},
|
||||
{Usage: usageBackspace},
|
||||
{Usage: usageBackspace},
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("backspaces(3) = %+v, want %+v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPasteChordConstants(t *testing.T) {
|
||||
if LeftGUI != 227 {
|
||||
t.Errorf("LeftGUI = %d, want 227", LeftGUI)
|
||||
}
|
||||
if VKey != 25 {
|
||||
t.Errorf("VKey = %d, want 25", VKey)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user