Reviewed-on: #6 Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com> Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
118 lines
2.5 KiB
Go
118 lines
2.5 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/holoplot/go-evdev"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type EventCodeParserTests struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func TestRunnerEventCodeParserTests(t *testing.T) {
|
|
suite.Run(t, new(EventCodeParserTests))
|
|
}
|
|
|
|
func parseCodeTestCase(t *EventCodeParserTests, in string, out int, prefix string) {
|
|
t.Run(fmt.Sprintf("%s: %s", prefix, in), func() {
|
|
code, err := parseCode(in, prefix)
|
|
t.Nil(err)
|
|
t.EqualValues(out, code)
|
|
})
|
|
}
|
|
|
|
func (t *EventCodeParserTests) TestParseCodeABS() {
|
|
testCases := []struct {
|
|
in string
|
|
out int
|
|
}{
|
|
{"ABS_X", evdev.ABS_X},
|
|
{"ABS_Y", evdev.ABS_Y},
|
|
{"ABS_Z", evdev.ABS_Z},
|
|
{"ABS_RX", evdev.ABS_RX},
|
|
{"ABS_RY", evdev.ABS_RY},
|
|
{"ABS_RZ", evdev.ABS_RZ},
|
|
{"ABS_THROTTLE", evdev.ABS_THROTTLE},
|
|
{"ABS_RUDDER", evdev.ABS_RUDDER},
|
|
{"x", evdev.ABS_X},
|
|
{"y", evdev.ABS_Y},
|
|
{"z", evdev.ABS_Z},
|
|
{"throttle", evdev.ABS_THROTTLE},
|
|
{"rudder", evdev.ABS_RUDDER},
|
|
{"0x0", evdev.ABS_X},
|
|
{"0x1", evdev.ABS_Y},
|
|
{"0x2", evdev.ABS_Z},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
parseCodeTestCase(t, testCase.in, testCase.out, "ABS")
|
|
}
|
|
}
|
|
|
|
func (t *EventCodeParserTests) TestParseCodeREL() {
|
|
testCases := []struct {
|
|
in string
|
|
out int
|
|
}{
|
|
{"REL_X", evdev.REL_X},
|
|
{"REL_Y", evdev.REL_Y},
|
|
{"REL_Z", evdev.REL_Z},
|
|
{"REL_RX", evdev.REL_RX},
|
|
{"REL_RY", evdev.REL_RY},
|
|
{"REL_RZ", evdev.REL_RZ},
|
|
{"REL_WHEEL", evdev.REL_WHEEL},
|
|
{"REL_HWHEEL", evdev.REL_HWHEEL},
|
|
{"REL_MISC", evdev.REL_MISC},
|
|
{"x", evdev.REL_X},
|
|
{"y", evdev.REL_Y},
|
|
{"wheel", evdev.REL_WHEEL},
|
|
{"0x0", evdev.REL_X},
|
|
{"0x1", evdev.REL_Y},
|
|
{"0x2", evdev.REL_Z},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
parseCodeTestCase(t, testCase.in, testCase.out, "REL")
|
|
}
|
|
}
|
|
|
|
func (t *EventCodeParserTests) TestParseCodeBTN() {
|
|
testCases := []struct {
|
|
in string
|
|
out int
|
|
}{
|
|
{"BTN_TRIGGER", evdev.BTN_TRIGGER},
|
|
{"trigger", evdev.BTN_TRIGGER},
|
|
{"0", evdev.BTN_TRIGGER},
|
|
{"0x120", evdev.BTN_TRIGGER},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
parseCodeTestCase(t, testCase.in, testCase.out, "BTN")
|
|
}
|
|
}
|
|
|
|
func (t *EventCodeParserTests) TestParseCodeInvalid() {
|
|
testCases := []struct {
|
|
in string
|
|
prefix string
|
|
}{
|
|
{"badbutton", "BTN"},
|
|
{"ABS_X", "BTN"},
|
|
{"!@#$%^&*(){}-_", "BTN"},
|
|
{"REL_X", "ABS"},
|
|
{"ABS_W", "ABS"},
|
|
{"0", "ABS"},
|
|
{"0xg", "ABS"},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
t.Run(fmt.Sprintf("%s - '%s'", testCase.prefix, testCase.in), func() {
|
|
_, err := parseCode(testCase.in, testCase.prefix)
|
|
t.NotNil(err)
|
|
})
|
|
}
|
|
}
|