Files
fenrir/internal/config/multi_press_test.go

46 lines
1.3 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import (
"path/filepath"
"testing"
)
func TestMultiPressTimeoutDefaultsValidationAndSave(t *testing.T) {
for _, version := range []string{"1", "2", "3"} {
settings, err := Decode([]byte("version=" + version + "\n"))
if err != nil || settings.Keyboard.MultiPressTimeoutMS != 200 {
t.Fatal(settings, err)
}
}
for _, value := range []string{"0", "-1", "5001", "0.5", "'200'"} {
if _, err := Decode([]byte("version=3\n[keyboard]\nmulti_press_timeout_ms=" + value)); err == nil {
t.Fatal(value)
}
}
for _, value := range []string{"1", "700", "5000"} {
settings, err := Decode([]byte("version=3\n[keyboard]\nmulti_press_timeout_ms=" + value))
if err != nil {
t.Fatal(err)
}
path := filepath.Join(t.TempDir(), "settings.toml")
if err := Save(path, settings); err != nil {
t.Fatal(err)
}
doc, err := Open_document(path, Defaults())
if err != nil {
t.Fatal(err)
}
doc.Settings.Presentation.Speech.Rate = 30
if err := doc.Save(doc.Settings); err != nil {
t.Fatal(err)
}
loaded, _, err := Load(path, nil)
if err != nil || loaded.Keyboard.MultiPressTimeoutMS != settings.Keyboard.MultiPressTimeoutMS {
t.Fatal(loaded, err)
}
}
}