62 lines
2.1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|