package config import ( "os" "path/filepath" "strings" "testing" ) func TestLoadDefaultsWhenMissing(t *testing.T) { cfg, err := Load("does-not-exist.toml") if err != nil { t.Fatalf("Load returned error: %v", err) } if cfg.OSC.Host != "127.0.0.1" || cfg.OSC.Port != 9001 { t.Fatalf("unexpected defaults: %+v", cfg.OSC) } } func TestLoadOSCValues(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "config.toml") if err := os.WriteFile(path, []byte("[osc]\nhost = \"0.0.0.0\"\nport = 9002\n"), 0o600); err != nil { t.Fatalf("WriteFile: %v", err) } cfg, err := Load(path) if err != nil { t.Fatalf("Load returned error: %v", err) } if cfg.OSC.Host != "0.0.0.0" || cfg.OSC.Port != 9002 { t.Fatalf("unexpected values: %+v", cfg.OSC) } } func TestLoadGUIValues(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "config.toml") if err := os.WriteFile(path, []byte("[gui]\ntop_most = true\nfont_size = 24\n"), 0o600); err != nil { t.Fatalf("WriteFile: %v", err) } cfg, err := Load(path) if err != nil { t.Fatalf("Load returned error: %v", err) } if cfg.GUI.TopMost != true || cfg.GUI.FontSize != 24 { t.Fatalf("unexpected gui values: %+v", cfg.GUI) } } func TestSaveGUIUpdatesSection(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "config.toml") initial := []byte("[self]\nname = \"alice\"\n\n[gui]\ntop_most = false\nfont_size = 18\n") if err := os.WriteFile(path, initial, 0o600); err != nil { t.Fatalf("WriteFile: %v", err) } if err := SaveGUI(path, GUIConfig{TopMost: true, FontSize: 26}); err != nil { t.Fatalf("SaveGUI returned error: %v", err) } cfg, err := Load(path) if err != nil { t.Fatalf("Load returned error: %v", err) } if cfg.GUI.TopMost != true || cfg.GUI.FontSize != 26 { t.Fatalf("unexpected saved gui values: %+v", cfg.GUI) } data, err := os.ReadFile(path) if err != nil { t.Fatalf("ReadFile: %v", err) } text := string(data) if !strings.Contains(text, "[self]") || !strings.Contains(text, "name = \"alice\"") { t.Fatalf("non-gui config content was lost: %s", text) } }