Add keyboard settings regression tests
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.stormux.org/storm/barnard/config"
|
||||
"git.stormux.org/storm/barnard/noise"
|
||||
"git.stormux.org/storm/barnard/uiterm"
|
||||
)
|
||||
|
||||
func TestOutputScrollScopeLeavesInputHomeAndEndAlone(t *testing.T) {
|
||||
if outputScrollAllowed(uiViewInput) {
|
||||
t.Fatal("message input unexpectedly allowed global chat scrolling")
|
||||
}
|
||||
for _, view := range []string{uiViewTree, uiViewAdmin} {
|
||||
if !outputScrollAllowed(view) {
|
||||
t.Errorf("%s unexpectedly disabled chat scrolling", view)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAudioSettingsExposeCurrentValuesAndPersistMicChanges(t *testing.T) {
|
||||
configPath := filepath.Join(t.TempDir(), "barnard.toml")
|
||||
userConfig := config.NewConfig(&configPath)
|
||||
b := &Barnard{UserConfig: userConfig, NoiseSuppressor: noise.NewSuppressor()}
|
||||
|
||||
items := b.audioSettingsItems()
|
||||
labels := make([]string, 0, len(items))
|
||||
for _, item := range items {
|
||||
labels = append(labels, item.String())
|
||||
}
|
||||
joined := strings.Join(labels, "\n")
|
||||
for _, wanted := range []string{"Automatic gain control: on", "Noise suppression: off", "Microphone level: 100 percent"} {
|
||||
if !strings.Contains(joined, wanted) {
|
||||
t.Errorf("settings did not include %q:\n%s", wanted, joined)
|
||||
}
|
||||
}
|
||||
|
||||
items[0].(adminItem).action()
|
||||
items[1].(adminItem).action()
|
||||
reloaded := config.NewConfig(&configPath)
|
||||
if reloaded.GetAGCEnabled() {
|
||||
t.Fatal("settings action did not persist disabled automatic gain control")
|
||||
}
|
||||
if !reloaded.GetNoiseSuppressionEnabled() {
|
||||
t.Fatal("settings action did not persist enabled noise suppression")
|
||||
}
|
||||
|
||||
if got := b.adjustMicVolume(-0.1); got < 0.899 || got > 0.901 {
|
||||
t.Fatalf("adjusted microphone level = %v, want 0.9", got)
|
||||
}
|
||||
if got := config.NewConfig(&configPath).GetMicVolume(); got < 0.899 || got > 0.901 {
|
||||
t.Fatalf("persisted microphone level = %v, want 0.9", got)
|
||||
}
|
||||
if got := b.setMicVolume(2); got != 1 {
|
||||
t.Fatalf("clamped microphone level = %v, want 1", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKeyboardHelpUsesConfiguredBindings(t *testing.T) {
|
||||
f2 := uiterm.KeyF2
|
||||
b := &Barnard{Hotkeys: &config.Hotkeys{
|
||||
HelpMenu: &f2,
|
||||
}}
|
||||
items := b.keyboardHelpItems()
|
||||
if len(items) == 0 || !strings.Contains(items[0].(adminItem).children[0].String(), "F2") {
|
||||
t.Fatal("keyboard help did not use the configured help binding")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user