// Copyright (c) 2026 Storm Dragon // SPDX-License-Identifier: GPL-3.0-or-later package config import ( "fmt" "path/filepath" "testing" ) func TestAttributesDefaultsValidationAndPersistence(t *testing.T) { for _, version := range []int{1, 2, 3} { settings, err := Decode([]byte(fmt.Sprintf("version=%d\n", version))) if err != nil || settings.Reading.Attributes != "none" { t.Fatal(version, settings.Reading, err) } } for _, mode := range []string{"none", "speech", "beeps", "both"} { settings, err := Decode([]byte("version=3\n[reading]\nattributes='" + mode + "'\n")) if err != nil { t.Fatal(err) } settings.Reading.AttributeFormat = "fenrirBold|fenrirUnderline|fenrirFGColor" path := filepath.Join(t.TempDir(), "settings.toml") if err := Save(path, settings); err != nil { t.Fatal(err) } saved, _, err := Load(path, nil) if err != nil || saved.Reading != settings.Reading { t.Fatal(saved.Reading, err) } } if _, err := Decode([]byte("version=3\n[reading]\nattributes='invalid'\n")); err == nil { t.Fatal("invalid attributes mode accepted") } }