package config import ( "os" "path/filepath" "testing" ) func TestDefaultValidate(t *testing.T) { cfg := Default() if err := cfg.Validate(); err != nil { t.Fatalf("default config invalid: %v", err) } } func TestLoadAndValidate(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "config.json") if err := os.WriteFile(path, []byte(`{"audio":{"toneLeftHz":900,"toneRightHz":1700,"toneAmplitude":0.3},"fm":{"frequencyMHz":99.9},"backend":{"kind":"file","outputPath":"out.f32"},"control":{"listenAddress":"127.0.0.1:8088"}}`), 0o644); err != nil { t.Fatalf("write config: %v", err) } cfg, err := Load(path) if err != nil { t.Fatalf("load config: %v", err) } if cfg.Audio.ToneLeftHz != 900 { t.Fatalf("unexpected left tone: %v", cfg.Audio.ToneLeftHz) } } func TestValidateRejectsBadFrequency(t *testing.T) { cfg := Default() cfg.FM.FrequencyMHz = 200 if err := cfg.Validate(); err == nil { t.Fatal("expected validation error") } }