Improve config yaml schema #16
1 changed files with 80 additions and 80 deletions
|
@ -1,6 +1,7 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/holoplot/go-evdev"
|
"github.com/holoplot/go-evdev"
|
||||||
|
@ -91,36 +92,35 @@ func (t *MakeRuleTargetsTests) TestMakeRuleTargetButton() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MakeRuleTargetsTests) TestMakeRuleTargetAxis() {
|
func (t *MakeRuleTargetsTests) TestMakeRuleTargetAxis() {
|
||||||
|
codeTestCases := []struct {
|
||||||
|
input string
|
||||||
|
output evdev.EvCode
|
||||||
|
}{
|
||||||
|
{"ABS_X", evdev.ABS_X},
|
||||||
|
{"0x01", evdev.ABS_Y},
|
||||||
|
{"x", evdev.ABS_X},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range codeTestCases {
|
||||||
|
t.Run(fmt.Sprintf("KeyCode %s", tc.input), func() {
|
||||||
config := RuleTargetConfigAxis{Device: "test"}
|
config := RuleTargetConfigAxis{Device: "test"}
|
||||||
|
config.Axis = tc.input
|
||||||
t.Run("Standard code", func() {
|
|
||||||
config.Axis = "ABS_X"
|
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
rule, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
t.EqualValues(evdev.ABS_X, rule.Axis)
|
t.EqualValues(tc.output, rule.Axis)
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Hex code", func() {
|
|
||||||
config.Axis = "0x01"
|
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
|
||||||
t.Nil(err)
|
|
||||||
t.EqualValues(evdev.ABS_Y, rule.Axis)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Un-prefixed code", func() {
|
|
||||||
config.Axis = "x"
|
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
|
||||||
t.Nil(err)
|
|
||||||
t.EqualValues(evdev.ABS_X, rule.Axis)
|
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("Invalid code", func() {
|
t.Run("Invalid code", func() {
|
||||||
|
config := RuleTargetConfigAxis{Device: "test"}
|
||||||
config.Axis = "foo"
|
config.Axis = "foo"
|
||||||
_, err := makeRuleTargetAxis(config, t.devs)
|
_, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.NotNil(err)
|
t.NotNil(err)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Invalid deadzone", func() {
|
t.Run("Invalid deadzone", func() {
|
||||||
|
config := RuleTargetConfigAxis{Device: "test"}
|
||||||
config.Axis = "x"
|
config.Axis = "x"
|
||||||
config.DeadzoneEnd = 100
|
config.DeadzoneEnd = 100
|
||||||
config.DeadzoneStart = 1000
|
config.DeadzoneStart = 1000
|
||||||
|
@ -128,78 +128,78 @@ func (t *MakeRuleTargetsTests) TestMakeRuleTargetAxis() {
|
||||||
t.NotNil(err)
|
t.NotNil(err)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Deadzone center/size", func() {
|
relDeadzoneTestCases := []struct {
|
||||||
config.Axis = "x"
|
inCenter int32
|
||||||
config.DeadzoneCenter = 5000
|
inSize int32
|
||||||
config.DeadzoneSize = 1000
|
outStart int32
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
outEnd int32
|
||||||
t.Nil(err)
|
}{
|
||||||
t.EqualValues(4500, rule.DeadzoneStart)
|
{5000, 1000, 4500, 5500},
|
||||||
t.EqualValues(5500, rule.DeadzoneEnd)
|
{0, 500, 0, 500},
|
||||||
})
|
{10000, 500, 9500, 10000},
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("Deadzone center/size lower boundary", func() {
|
for _, tc := range relDeadzoneTestCases {
|
||||||
config.Axis = "x"
|
t.Run(fmt.Sprintf("Relative Deadzone %d +- %d", tc.inCenter, tc.inSize), func() {
|
||||||
config.DeadzoneCenter = 0
|
config := RuleTargetConfigAxis{
|
||||||
config.DeadzoneSize = 500
|
Device: "test",
|
||||||
|
Axis: "x",
|
||||||
|
DeadzoneCenter: tc.inCenter,
|
||||||
|
DeadzoneSize: tc.inSize,
|
||||||
|
}
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
rule, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.Nil(err)
|
|
||||||
t.EqualValues(0, rule.DeadzoneStart)
|
|
||||||
t.EqualValues(500, rule.DeadzoneEnd)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Deadzone center/size upper boundary", func() {
|
|
||||||
config.Axis = "x"
|
|
||||||
config.DeadzoneCenter = 10000
|
|
||||||
config.DeadzoneSize = 500
|
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
t.EqualValues(9500, rule.DeadzoneStart)
|
t.Equal(tc.outStart, rule.DeadzoneStart)
|
||||||
t.EqualValues(10000, rule.DeadzoneEnd)
|
t.Equal(tc.outEnd, rule.DeadzoneEnd)
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("Deadzone center/size invalid center", func() {
|
t.Run("Deadzone center/size invalid center", func() {
|
||||||
config.Axis = "x"
|
config := RuleTargetConfigAxis{
|
||||||
config.DeadzoneCenter = 20000
|
Device: "test",
|
||||||
config.DeadzoneSize = 500
|
Axis: "x",
|
||||||
|
DeadzoneCenter: 20000,
|
||||||
|
DeadzoneSize: 500,
|
||||||
|
}
|
||||||
_, err := makeRuleTargetAxis(config, t.devs)
|
_, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.NotNil(err)
|
t.NotNil(err)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Deadzone center/percent", func() {
|
relDeadzonePercentTestCases := []struct {
|
||||||
config.Axis = "x"
|
inCenter int32
|
||||||
config.DeadzoneCenter = 5000
|
inSizePercent int32
|
||||||
config.DeadzoneSizePercent = 10
|
outStart int32
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
outEnd int32
|
||||||
t.Nil(err)
|
}{
|
||||||
t.EqualValues(4500, rule.DeadzoneStart)
|
{5000, 10, 4500, 5500},
|
||||||
t.EqualValues(5500, rule.DeadzoneEnd)
|
{0, 10, 0, 1000},
|
||||||
})
|
{10000, 10, 9000, 10000},
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("Deadzone center/percent lower boundary", func() {
|
for _, tc := range relDeadzonePercentTestCases {
|
||||||
config.Axis = "x"
|
t.Run(fmt.Sprintf("Relative percent deadzone %d +- %d%%", tc.inCenter, tc.inSizePercent), func() {
|
||||||
config.DeadzoneCenter = 0
|
config := RuleTargetConfigAxis{
|
||||||
config.DeadzoneSizePercent = 10
|
Device: "test",
|
||||||
|
Axis: "x",
|
||||||
|
DeadzoneCenter: tc.inCenter,
|
||||||
|
DeadzoneSizePercent: tc.inSizePercent,
|
||||||
|
}
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
rule, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.Nil(err)
|
|
||||||
t.EqualValues(0, rule.DeadzoneStart)
|
|
||||||
t.EqualValues(1000, rule.DeadzoneEnd)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Deadzone center/percent upper boundary", func() {
|
|
||||||
config.Axis = "x"
|
|
||||||
config.DeadzoneCenter = 10000
|
|
||||||
config.DeadzoneSizePercent = 10
|
|
||||||
rule, err := makeRuleTargetAxis(config, t.devs)
|
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
t.EqualValues(9000, rule.DeadzoneStart)
|
t.Equal(tc.outStart, rule.DeadzoneStart)
|
||||||
t.EqualValues(10000, rule.DeadzoneEnd)
|
t.Equal(tc.outEnd, rule.DeadzoneEnd)
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("Deadzone center/percent invalid center", func() {
|
t.Run("Deadzone center/percent invalid center", func() {
|
||||||
config.Axis = "x"
|
config := RuleTargetConfigAxis{
|
||||||
config.DeadzoneCenter = 20000
|
Device: "test",
|
||||||
config.DeadzoneSizePercent = 10
|
Axis: "x",
|
||||||
|
DeadzoneCenter: 20000,
|
||||||
|
DeadzoneSizePercent: 10,
|
||||||
|
}
|
||||||
_, err := makeRuleTargetAxis(config, t.devs)
|
_, err := makeRuleTargetAxis(config, t.devs)
|
||||||
t.NotNil(err)
|
t.NotNil(err)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue