|
|
|
@@ -0,0 +1,33 @@ |
|
|
|
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) |
|
|
|
} |
|
|
|
} |