Wideband autonomous SDR analysis engine forked from sdr-visual-suite
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.6KB

  1. package pipeline
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. func TestHoldPolicyArchiveBiasesRecord(t *testing.T) {
  7. policy := Policy{DecisionHoldMs: 1000, Profile: "archive", RefinementStrategy: "archive-oriented"}
  8. hold := HoldPolicyFromPolicy(policy)
  9. if hold.RecordMs <= hold.BaseMs {
  10. t.Fatalf("expected archive profile to extend record hold, got %d vs %d", hold.RecordMs, hold.BaseMs)
  11. }
  12. if hold.RefinementMs <= hold.BaseMs {
  13. t.Fatalf("expected archive profile to extend refinement hold, got %d vs %d", hold.RefinementMs, hold.BaseMs)
  14. }
  15. if !containsReason(hold.Reasons, HoldReasonProfileArchive) {
  16. t.Fatalf("expected profile archive reason, got %+v", hold.Reasons)
  17. }
  18. }
  19. func TestHoldPolicyDigitalBiasesDecode(t *testing.T) {
  20. policy := Policy{DecisionHoldMs: 1000, Profile: "digital-hunting", RefinementStrategy: "digital-hunting"}
  21. hold := HoldPolicyFromPolicy(policy)
  22. if hold.DecodeMs <= hold.RecordMs {
  23. t.Fatalf("expected digital profile to favor decode hold, got decode=%d record=%d", hold.DecodeMs, hold.RecordMs)
  24. }
  25. if !containsReason(hold.Reasons, HoldReasonProfileDigital) {
  26. t.Fatalf("expected profile digital reason, got %+v", hold.Reasons)
  27. }
  28. }
  29. func TestAdmitRefinementPlanNoCandidatesReason(t *testing.T) {
  30. res := AdmitRefinementPlan(RefinementPlan{}, Policy{}, time.Now(), &RefinementHold{Active: map[int64]time.Time{}})
  31. if res.Admission.Reason != ReasonAdmissionNoCandidates {
  32. t.Fatalf("expected no-candidates reason, got %s", res.Admission.Reason)
  33. }
  34. }
  35. func containsReason(reasons []string, target string) bool {
  36. for _, r := range reasons {
  37. if r == target {
  38. return true
  39. }
  40. }
  41. return false
  42. }