70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// Authors: Storm Dragon, Angus Kola
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package config
|
|
|
|
import "testing"
|
|
|
|
func TestLoadExplicitZeroAndEmptyOverridesAcrossSchemas(t *testing.T) {
|
|
for name, contents := range map[string]string{
|
|
"legacy profile overrides general": `
|
|
[general]
|
|
enableSpeech = true
|
|
enableBraille = true
|
|
soundVolume = 0.8
|
|
cthulhuModifierKeys = ["Insert"]
|
|
echoSpeechServerInfo = ["server", "test-module"]
|
|
[general.voices.default]
|
|
rate = 75
|
|
[profiles.default]
|
|
enableSpeech = false
|
|
enableBraille = false
|
|
soundVolume = 0.0
|
|
playSoundForRole = false
|
|
cthulhuModifierKeys = []
|
|
echoSpeechServerInfo = ["server", ""]
|
|
[profiles.default.reading]
|
|
speakBlankLines = false
|
|
[profiles.default.voices.default]
|
|
rate = 0
|
|
`,
|
|
"versioned patch overrides defaults": `
|
|
schema-version = 2
|
|
active-profile = "default"
|
|
[profiles.default.speech]
|
|
enabled = false
|
|
[profiles.default.speech.default-voice]
|
|
rate = 0
|
|
[profiles.default.braille]
|
|
enabled = false
|
|
[profiles.default.sound]
|
|
volume = 0.0
|
|
play-for-role = false
|
|
[profiles.default.keyboard]
|
|
screen-reader-keys = []
|
|
[profiles.default.key-echo]
|
|
speech-server = ""
|
|
[profiles.default.presentation.reading]
|
|
speak-blank-lines = false
|
|
`,
|
|
} {
|
|
t.Run(name, func(t *testing.T) {
|
|
settings, err := Load(writeConfig(t, contents))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if settings.EnableSpeech || settings.EnableBraille || settings.SoundVolume != 0 ||
|
|
settings.PlaySoundForRole || settings.Reading.SpeakBlankLines ||
|
|
len(settings.CthulhuModifierKeys) != 0 || settings.EchoSpeechServer != "" ||
|
|
settings.DefaultVoice.Rate == nil || *settings.DefaultVoice.Rate != 0 {
|
|
t.Fatalf("explicit false/zero/empty values were lost: %+v", settings)
|
|
}
|
|
if !settings.EnableSound || !settings.PlaySoundForState || !settings.EnableKeyEcho ||
|
|
!settings.Reading.ReadFullRowInGUITable || settings.DefaultVoice.Gain != nil {
|
|
t.Fatalf("omitted fields changed their defaults: %+v", settings)
|
|
}
|
|
})
|
|
}
|
|
}
|