Files

37 lines
1.2 KiB
Go

// Fenrir console screen reader.
// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package config
import (
"path/filepath"
"testing"
)
func TestSoundDefaultsSelectionAndRoundTrip(t *testing.T) {
for _, version := range []string{"1", "2", "3"} {
settings, err := Decode([]byte("version=" + version + "\n"))
if err != nil || settings.Presentation.Sound != Defaults().Presentation.Sound {
t.Fatal(settings.Presentation.Sound, err)
}
}
settings := Defaults()
settings.Presentation.Sound.Driver = "alsa"
settings.Presentation.Sound.Device = "plughw:CARD=Generic,DEV=0"
settings.Presentation.Sound.Theme = "/tmp/fixture-pack"
path := filepath.Join(t.TempDir(), "settings.toml")
if err := Save(path, settings); err != nil {
t.Fatal(err)
}
got, _, err := Load(path, nil)
if err != nil || got.Presentation.Sound != settings.Presentation.Sound {
t.Fatal(got.Presentation.Sound, err)
}
for _, data := range []string{"driver='unknown'", "device=''", "device='bad\nname'", "theme='../other'"} {
if _, err := Decode([]byte("version=3\n[presentation.sound]\nenabled=false\n" + data)); err == nil {
t.Fatal("invalid sound choice accepted", data)
}
}
}