Wideband autonomous SDR analysis engine forked from sdr-visual-suite
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

45 行
1.2KB

  1. package main
  2. import (
  3. "testing"
  4. "sdr-wideband-suite/internal/config"
  5. "sdr-wideband-suite/internal/detector"
  6. fftutil "sdr-wideband-suite/internal/fft"
  7. "sdr-wideband-suite/internal/pipeline"
  8. )
  9. func TestNewDSPRuntime(t *testing.T) {
  10. cfg := config.Default()
  11. det := detector.New(cfg.Detector, cfg.SampleRate, cfg.FFTSize)
  12. window := fftutil.Hann(cfg.FFTSize)
  13. rt := newDSPRuntime(cfg, det, window, &gpuStatus{})
  14. if rt == nil {
  15. t.Fatalf("runtime is nil")
  16. }
  17. if rt.plan == nil {
  18. t.Fatalf("fft plan is nil")
  19. }
  20. if rt.cfg.FFTSize != cfg.FFTSize {
  21. t.Fatalf("unexpected fft size: %d", rt.cfg.FFTSize)
  22. }
  23. }
  24. func TestScheduledCandidateSelectionUsesPolicy(t *testing.T) {
  25. cfg := config.Default()
  26. cfg.Resources.MaxRefinementJobs = 1
  27. cfg.Refinement.MinCandidateSNRDb = 6
  28. policy := pipeline.PolicyFromConfig(cfg)
  29. got := pipeline.ScheduleCandidates([]pipeline.Candidate{
  30. {ID: 1, SNRDb: 3, BandwidthHz: 1000},
  31. {ID: 2, SNRDb: 12, BandwidthHz: 5000},
  32. {ID: 3, SNRDb: 8, BandwidthHz: 7000},
  33. }, policy)
  34. if len(got) != 1 {
  35. t.Fatalf("expected 1 scheduled candidate, got %d", len(got))
  36. }
  37. if got[0].Candidate.ID != 2 {
  38. t.Fatalf("expected highest priority candidate, got %d", got[0].Candidate.ID)
  39. }
  40. }