Files

62 lines
2.1 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import (
"path/filepath"
"testing"
)
func TestHardwareSettingsPersistInApplicationProfile(t *testing.T) {
path := filepath.Join(t.TempDir(), "settings.toml")
store, err := NewStore(path)
if err != nil {
t.Fatal(err)
}
global := DefaultSettings()
if err := store.Save(global); err != nil {
t.Fatal(err)
}
application := global
application.SpeechServerFactory = "hardwarefactory"
application.SpeechOutputModule = "dectalk"
application.HardwareSpeechDevice = "/dev/ttyTEST0"
application.HardwareSpeechBaudRate = 19200
if err := store.SaveForApplication("Example Editor", application); err != nil {
t.Fatal(err)
}
reopened, err := NewStore(path)
if err != nil {
t.Fatal(err)
}
loaded, found, err := reopened.LoadForApplication("Example Editor")
if err != nil || !found || loaded.SpeechServerFactory != "hardwarefactory" ||
loaded.SpeechOutputModule != "dectalk" || loaded.HardwareSpeechDevice != "/dev/ttyTEST0" || loaded.HardwareSpeechBaudRate != 19200 {
t.Fatalf("hardware profile=%+v found=%v error=%v", loaded, found, err)
}
loaded, err = reopened.Load()
if err != nil || loaded.SpeechServerFactory != "speechdispatcherfactory" || loaded.HardwareSpeechDevice != "" || loaded.HardwareSpeechBaudRate != 9600 {
t.Fatalf("hardware override changed global settings=%+v error=%v", loaded, err)
}
}
func TestHardwareSettingsLoadPythonAndRejectInvalidDevices(t *testing.T) {
loaded, err := Load(writeConfig(t, `[general]
speechServerFactory = "hardwarefactory"
speechServerInfo = ["LiteTalk", "litetalk"]
hardwareSpeechDevice = "/dev/ttyTEST0"
hardwareSpeechBaudRate = 9600
`))
if err != nil || loaded.SpeechOutputModule != "litetalk" || loaded.HardwareSpeechDevice != "/dev/ttyTEST0" {
t.Fatalf("Python hardware settings=%+v error=%v", loaded, err)
}
for _, device := range []string{"", "auto", "ttyTEST0", "/dev/ttyTEST0\n"} {
loaded.HardwareSpeechDevice = device
if err := Validate(loaded); err == nil {
t.Fatalf("accepted device %q", device)
}
}
}