package classifier import "testing" func TestRuleClassifyWFM(t *testing.T) { sampleRate := 1_000_000 fftSize := 1024 spectrum := make([]float64, fftSize) for i := range spectrum { spectrum[i] = -100 } start := 100 end := 350 // ~244 bins -> ~238 kHz for i := start; i <= end; i++ { spectrum[i] = -10 } cls := Classify(SignalInput{FirstBin: start, LastBin: end}, spectrum, sampleRate, fftSize, nil) if cls == nil || cls.ModType != ClassWFM { t.Fatalf("expected WFM, got %+v", cls) } } func TestSoftmaxConfidence(t *testing.T) { scores1 := map[SignalClass]float64{ClassNFM: 2.0, ClassAM: 0.3, ClassNoise: 0.1} c1 := softmaxConfidence(scores1, ClassNFM) if c1 < 0.7 { t.Fatalf("clear winner should have high confidence: %f", c1) } scores2 := map[SignalClass]float64{ClassSSBUSB: 1.0, ClassSSBLSB: 0.9, ClassAM: 0.8} c2 := softmaxConfidence(scores2, ClassSSBUSB) if c2 > 0.5 { t.Fatalf("ambiguous should have low confidence: %f", c2) } c3 := softmaxConfidence(map[SignalClass]float64{}, ClassNFM) if c3 != 0.1 { t.Fatalf("empty should return 0.1: %f", c3) } }