Use testify, write a couple more tests, and start a major refactor.

This commit is contained in:
Anna Rose Wiggins 2025-07-04 23:40:34 -04:00
parent 649fb5e377
commit 3b75fd30e4
10 changed files with 286 additions and 185 deletions

View file

@ -0,0 +1,41 @@
package mappingrules
import (
"slices"
"git.annabunches.net/annabunches/joyful/internal/logger"
"github.com/holoplot/go-evdev"
)
type RuleTargetModeSelect struct {
RuleTargetBase
ModeSelect []string
}
func NewRuleTargetModeSelect(modes []string) *RuleTargetModeSelect {
return &RuleTargetModeSelect{
RuleTargetBase: NewRuleTargetBase("", nil, 0, false),
ModeSelect: modes,
}
}
// RuleTargetModeSelect doesn't make sense as an input type
func (target *RuleTargetModeSelect) NormalizeValue(value int32) int32 {
return -1
}
func (target *RuleTargetModeSelect) CreateEvent(value int32, mode *string) *evdev.InputEvent {
if value == 0 {
return nil
}
index := 0
if currentMode := slices.Index(target.ModeSelect, *mode); currentMode != -1 {
// find the next mode
index = (currentMode + 1) % len(target.ModeSelect)
}
*mode = target.ModeSelect[index]
logger.Logf("Mode changed to '%s'", *mode)
return nil
}