Allow all buttons and axes on virtual devices to be specified by either number or an explicit list. (#5)
Reviewed-on: #5 Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com> Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
This commit is contained in:
parent
712dcdbc07
commit
6ef0cbd07c
11 changed files with 1114 additions and 130 deletions
|
@ -15,9 +15,38 @@ func TestRunnerDevicesConfig(t *testing.T) {
|
|||
suite.Run(t, new(DevicesConfigTests))
|
||||
}
|
||||
|
||||
func (t *DevicesConfigTests) TestMakeButtons() {
|
||||
t.Run("Maximum buttons", func() {
|
||||
buttons := makeButtons(VirtualDeviceMaxButtons, []string{})
|
||||
t.Equal(VirtualDeviceMaxButtons, len(buttons))
|
||||
})
|
||||
|
||||
t.Run("Truncated buttons", func() {
|
||||
buttons := makeButtons(VirtualDeviceMaxButtons+1, []string{})
|
||||
t.Equal(VirtualDeviceMaxButtons, len(buttons))
|
||||
})
|
||||
|
||||
t.Run("16 buttons", func() {
|
||||
buttons := makeButtons(16, []string{})
|
||||
t.Equal(16, len(buttons))
|
||||
t.Contains(buttons, evdev.EvCode(evdev.BTN_DEAD))
|
||||
t.NotContains(buttons, evdev.EvCode(evdev.BTN_TRIGGER_HAPPY))
|
||||
})
|
||||
|
||||
t.Run("Explicit buttons", func() {
|
||||
buttonConfig := []string{"BTN_THUMB", "top", "btn_top2", "0x2fe", "0x300", "15"}
|
||||
buttons := makeButtons(0, buttonConfig)
|
||||
t.Equal(len(buttonConfig), len(buttons))
|
||||
t.Contains(buttons, evdev.EvCode(0x2fe))
|
||||
t.Contains(buttons, evdev.EvCode(0x300))
|
||||
t.Contains(buttons, evdev.EvCode(evdev.BTN_TOP))
|
||||
t.Contains(buttons, evdev.EvCode(evdev.BTN_DEAD))
|
||||
})
|
||||
}
|
||||
|
||||
func (t *DevicesConfigTests) TestMakeAxes() {
|
||||
t.Run("8 axes", func() {
|
||||
axes := makeAxes(8)
|
||||
axes := makeAxes(8, []string{})
|
||||
t.Equal(8, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_Y))
|
||||
|
@ -30,34 +59,61 @@ func (t *DevicesConfigTests) TestMakeAxes() {
|
|||
})
|
||||
|
||||
t.Run("9 axes is truncated", func() {
|
||||
axes := makeAxes(9)
|
||||
axes := makeAxes(9, []string{})
|
||||
t.Equal(8, len(axes))
|
||||
})
|
||||
|
||||
t.Run("3 axes", func() {
|
||||
axes := makeAxes(3)
|
||||
axes := makeAxes(3, []string{})
|
||||
t.Equal(3, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_Y))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_Z))
|
||||
})
|
||||
}
|
||||
|
||||
func (t *DevicesConfigTests) TestMakeButtons() {
|
||||
t.Run("Maximum buttons", func() {
|
||||
buttons := makeButtons(VirtualDeviceMaxButtons)
|
||||
t.Equal(VirtualDeviceMaxButtons, len(buttons))
|
||||
})
|
||||
|
||||
t.Run("Truncated buttons", func() {
|
||||
buttons := makeButtons(VirtualDeviceMaxButtons + 1)
|
||||
t.Equal(VirtualDeviceMaxButtons, len(buttons))
|
||||
})
|
||||
|
||||
t.Run("16 buttons", func() {
|
||||
buttons := makeButtons(16)
|
||||
t.Equal(16, len(buttons))
|
||||
t.Contains(buttons, evdev.EvCode(evdev.BTN_DEAD))
|
||||
t.NotContains(buttons, evdev.EvCode(evdev.BTN_TRIGGER_HAPPY))
|
||||
t.Run("4 explicit axis", func() {
|
||||
axes := makeAxes(0, []string{"x", "y", "throttle", "rudder"})
|
||||
t.Equal(4, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_Y))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_THROTTLE))
|
||||
t.Contains(axes, evdev.EvCode(evdev.ABS_RUDDER))
|
||||
})
|
||||
}
|
||||
|
||||
func (t *DevicesConfigTests) TestMakeRelativeAxes() {
|
||||
t.Run("10 axes", func() {
|
||||
axes := makeRelativeAxes(10, []string{})
|
||||
t.Equal(10, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_MISC))
|
||||
})
|
||||
|
||||
t.Run("11 axes", func() {
|
||||
axes := makeRelativeAxes(11, []string{})
|
||||
t.Equal(10, len(axes))
|
||||
})
|
||||
|
||||
t.Run("3 axes", func() {
|
||||
axes := makeRelativeAxes(3, []string{})
|
||||
t.Equal(3, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_Y))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_Z))
|
||||
})
|
||||
|
||||
t.Run("1 explicit axis", func() {
|
||||
axes := makeRelativeAxes(0, []string{"wheel"})
|
||||
t.Equal(1, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_WHEEL))
|
||||
})
|
||||
|
||||
t.Run("4 explicit axis", func() {
|
||||
axes := makeRelativeAxes(0, []string{"x", "y", "wheel", "hwheel"})
|
||||
t.Equal(4, len(axes))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_X))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_Y))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_WHEEL))
|
||||
t.Contains(axes, evdev.EvCode(evdev.REL_HWHEEL))
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue