|
- package pipeline
-
- import "testing"
-
- func TestFuseCandidatesDedup(t *testing.T) {
- primary := []Candidate{
- {
- ID: 1,
- CenterHz: 100.0e6,
- BandwidthHz: 20000,
- Evidence: []LevelEvidence{
- {Level: AnalysisLevel{Name: "surveillance"}},
- },
- },
- }
- derived := []Candidate{
- {
- ID: -1,
- CenterHz: 100.0e6 + 2000,
- BandwidthHz: 25000,
- Evidence: []LevelEvidence{
- {Level: AnalysisLevel{Name: "surveillance-lowres"}},
- },
- },
- }
- fused := FuseCandidates(primary, derived)
- if len(fused) != 1 {
- t.Fatalf("expected 1 fused candidate, got %d", len(fused))
- }
- if got := CandidateEvidenceLevelCount(fused[0]); got != 2 {
- t.Fatalf("expected 2 evidence levels after fuse, got %d", got)
- }
- if fused[0].EvidenceState == nil || !fused[0].EvidenceState.Fused || !fused[0].EvidenceState.MultiLevelConfirmed {
- t.Fatalf("expected fused multi-level evidence state, got %+v", fused[0].EvidenceState)
- }
- }
-
- func TestFuseCandidatesSingleVsMultiResolution(t *testing.T) {
- primary := []Candidate{
- {
- ID: 1,
- CenterHz: 101.0e6,
- BandwidthHz: 12000,
- Evidence: []LevelEvidence{
- {Level: AnalysisLevel{Name: "surveillance"}},
- },
- },
- }
- single := FuseCandidates(primary, nil)
- if len(single) != 1 {
- t.Fatalf("expected single-resolution to keep 1 candidate, got %d", len(single))
- }
- derived := []Candidate{
- {
- ID: -2,
- CenterHz: 101.3e6,
- BandwidthHz: 15000,
- Evidence: []LevelEvidence{
- {Level: AnalysisLevel{Name: "surveillance-lowres"}},
- },
- },
- }
- multi := FuseCandidates(primary, derived)
- if len(multi) != 2 {
- t.Fatalf("expected multi-resolution to keep 2 candidates, got %d", len(multi))
- }
- }
|