// 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) } } }