From 65b9845d40e6f3b785b0f1ebfcb09843a2945616 Mon Sep 17 00:00:00 2001 From: Jan Svabenik Date: Sun, 22 Mar 2026 15:19:53 +0100 Subject: [PATCH] test: cover overlapping monitor windows --- internal/pipeline/decisions_test.go | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/internal/pipeline/decisions_test.go b/internal/pipeline/decisions_test.go index 168c9ad..bbdf7c0 100644 --- a/internal/pipeline/decisions_test.go +++ b/internal/pipeline/decisions_test.go @@ -77,3 +77,42 @@ func TestDecideSignalActionWindowAutoDecode(t *testing.T) { t.Fatalf("expected decode window match to be set") } } + +func TestDecideSignalActionOverlappingRecordDecodeWindows(t *testing.T) { + policy := Policy{ + MonitorWindows: finalizeMonitorWindows([]MonitorWindow{ + { + Label: "record-zone", + StartHz: 100, + EndHz: 200, + CenterHz: 150, + SpanHz: 100, + AutoRecord: true, + }, + { + Label: "decode-zone", + StartHz: 140, + EndHz: 260, + CenterHz: 200, + SpanHz: 120, + AutoDecode: true, + }, + }), + } + decision := DecideSignalAction(policy, Candidate{ID: 5, CenterHz: 150}, nil) + if !decision.ShouldRecord { + t.Fatalf("expected record decision from overlapping window") + } + if !decision.ShouldAutoDecode { + t.Fatalf("expected decode decision from overlapping window") + } + if decision.RecordWindow == nil || decision.RecordWindow.Label != "record-zone" { + t.Fatalf("expected record window match to be record-zone") + } + if decision.DecodeWindow == nil || decision.DecodeWindow.Label != "decode-zone" { + t.Fatalf("expected decode window match to be decode-zone") + } + if decision.MonitorDetail == nil || decision.MonitorDetail.Label != "record-zone" { + t.Fatalf("expected record-zone to be preferred monitor detail, got %+v", decision.MonitorDetail) + } +}