package pipeline import ( "testing" "sdr-wideband-suite/internal/config" ) func TestResolveAndMergeProfile(t *testing.T) { cfg := config.Default() cfg.Profiles = append(cfg.Profiles, config.ProfileConfig{ Name: "custom-test", Description: "test profile", Pipeline: &config.PipelineConfig{Mode: "custom", Goals: config.PipelineGoalConfig{Intent: "custom-intent", MonitorSpanHz: 12.5e6}}, Surveillance: &config.SurveillanceConfig{AnalysisFFTSize: 16384, FrameRate: 8, Strategy: "single-resolution"}, Refinement: &config.RefinementConfig{Enabled: true, MaxConcurrent: 20, MinCandidateSNRDb: 4}, Resources: &config.ResourceConfig{PreferGPU: true, MaxRefinementJobs: 20, MaxRecordingStreams: 32}, }) p, ok := ResolveProfile(cfg, "custom-test") if !ok { t.Fatalf("expected profile") } MergeProfile(&cfg, p) if cfg.Pipeline.Mode != "custom" || cfg.Pipeline.Goals.Intent != "custom-intent" { t.Fatalf("pipeline not merged: %+v", cfg.Pipeline) } if cfg.FFTSize != 16384 || cfg.FrameRate != 8 { t.Fatalf("surveillance not merged into legacy fields: fft=%d fps=%d", cfg.FFTSize, cfg.FrameRate) } if cfg.Resources.MaxRefinementJobs != 20 { t.Fatalf("resources not merged: %+v", cfg.Resources) } }