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