Wideband autonomous SDR analysis engine forked from sdr-visual-suite
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

57 rindas
1.3KB

  1. package detector
  2. import (
  3. "testing"
  4. "time"
  5. "sdr-visual-suite/internal/config"
  6. )
  7. func TestDetectorCreatesEvent(t *testing.T) {
  8. d := New(config.DetectorConfig{
  9. ThresholdDb: -10,
  10. MinDurationMs: 1,
  11. HoldMs: 10,
  12. EmaAlpha: 0.2,
  13. HysteresisDb: 3,
  14. MinStableFrames: 1,
  15. GapToleranceMs: 10,
  16. CFARMode: "OFF",
  17. CFARGuardCells: 2,
  18. CFARTrainCells: 16,
  19. CFARRank: 24,
  20. CFARScaleDb: 6,
  21. CFARWrapAround: true,
  22. }, 1000, 10)
  23. center := 0.0
  24. spectrum := []float64{-30, -30, -30, -5, -5, -30, -30, -30, -30, -30}
  25. now := time.Now()
  26. finished, signals := d.Process(now, spectrum, center)
  27. if len(finished) != 0 {
  28. t.Fatalf("expected no finished events yet")
  29. }
  30. if len(signals) != 1 {
  31. t.Fatalf("expected 1 signal, got %d", len(signals))
  32. }
  33. if signals[0].BWHz <= 0 {
  34. t.Fatalf("expected bandwidth > 0")
  35. }
  36. // Extend signal duration.
  37. _, _ = d.Process(now.Add(5*time.Millisecond), spectrum, center)
  38. // Advance beyond hold with no signal to finalize.
  39. now2 := now.Add(30 * time.Millisecond)
  40. noSignal := make([]float64, len(spectrum))
  41. for i := range noSignal {
  42. noSignal[i] = -100
  43. }
  44. finished, _ = d.Process(now2, noSignal, center)
  45. if len(finished) != 1 {
  46. t.Fatalf("expected 1 finished event, got %d", len(finished))
  47. }
  48. if finished[0].Bandwidth <= 0 {
  49. t.Fatalf("event bandwidth not set")
  50. }
  51. }