|
- 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")
- }
- }
-
- func TestValidateRejectsBadPreEmphasis(t *testing.T) {
- cfg := Default()
- cfg.FM.PreEmphasisUS = 150
- if err := cfg.Validate(); err == nil {
- t.Fatal("expected validation error for preEmphasisUS > 100")
- }
- }
-
- func TestDefaultPreEmphasis(t *testing.T) {
- cfg := Default()
- if cfg.FM.PreEmphasisUS != 50 {
- t.Fatalf("expected default preEmphasisUS=50, got %.0f", cfg.FM.PreEmphasisUS)
- }
- }
-
- func TestDefaultFMModulation(t *testing.T) {
- cfg := Default()
- if !cfg.FM.FMModulationEnabled {
- t.Fatal("expected FM modulation enabled by default")
- }
- if cfg.FM.MaxDeviationHz != 75000 {
- t.Fatalf("expected default maxDeviationHz=75000, got %.0f", cfg.FM.MaxDeviationHz)
- }
- }
|