33 lines
1.1 KiB
Go
33 lines
1.1 KiB
Go
package udp
|
|
|
|
import "testing"
|
|
|
|
func TestWSJTSender(t *testing.T) {
|
|
cases := []struct {
|
|
msg string
|
|
wantCall string
|
|
wantCQ bool
|
|
}{
|
|
{"CQ K1ABC FN42", "K1ABC", true},
|
|
{"CQ DX W2XYZ EM12", "W2XYZ", true}, // modifier "DX" skipped
|
|
{"CQ NA VE3ABC FN03", "VE3ABC", true}, // region modifier skipped
|
|
{"CQ 020 JA1XYZ PM95", "JA1XYZ", true},// zone modifier skipped
|
|
{"W2XYZ K1ABC -10", "K1ABC", false}, // exchange → sender is 2nd call
|
|
{"W2XYZ K1ABC R-10", "K1ABC", false},
|
|
{"W2XYZ K1ABC RR73", "K1ABC", false},
|
|
{"F4BPO K1ABC/P 73", "K1ABC/P", false},// portable call kept
|
|
{"CQ F/DL1ABC JO31", "F/DL1ABC", true},// compound prefix
|
|
// Non-callsign / free text → no sender.
|
|
{"TNX 73 GL", "", false},
|
|
{"K1ABC RR73", "", false}, // only one call + a token → 2nd token not a call
|
|
{"", "", false},
|
|
{"CQ CQ CQ", "", true}, // CQ but no resolvable call
|
|
}
|
|
for _, c := range cases {
|
|
call, cq := wsjtSender(c.msg)
|
|
if call != c.wantCall || cq != c.wantCQ {
|
|
t.Errorf("wsjtSender(%q) = (%q,%v), want (%q,%v)", c.msg, call, cq, c.wantCall, c.wantCQ)
|
|
}
|
|
}
|
|
}
|