63 lines
2.1 KiB
Go
63 lines
2.1 KiB
Go
package lookup
|
|
|
|
import "testing"
|
|
|
|
func TestHomeCall(t *testing.T) {
|
|
cases := map[string]string{
|
|
"JW/OR1A": "OR1A", // portable prefix → home call
|
|
"DL/F4NIE": "F4NIE", // prefix/home
|
|
"F4BPO/P": "F4BPO", // suffix dropped
|
|
"F4BPO/9": "F4BPO", // call-area digit dropped
|
|
"VP8/F4BPO": "F4BPO", // both have digits → longest wins
|
|
"MM/KA9P": "KA9P", // Scotland prefix + US home
|
|
"OH2BH": "OH2BH", // no slash → unchanged
|
|
"3D2/RW3RN": "RW3RN",
|
|
}
|
|
for in, want := range cases {
|
|
if got := homeCall(in); got != want {
|
|
t.Errorf("homeCall(%q) = %q, want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Mobile and maritime-mobile suffixes: /M is the case that surfaced in the field
|
|
// (F4LYI/M resolved only to cty.dat while F4LYI resolved on QRZ), so pin the
|
|
// whole suffix family — the home call is what the provider record is filed under.
|
|
func TestHomeCallSuffixes(t *testing.T) {
|
|
for call, want := range map[string]string{
|
|
"F4LYI/M": "F4LYI",
|
|
"F4LYI/MM": "F4LYI",
|
|
"F4LYI/AM": "F4LYI",
|
|
"F4LYI/QRP": "F4LYI",
|
|
"F4LYI/A": "F4LYI",
|
|
"F4LYI/B": "F4LYI",
|
|
} {
|
|
if got := homeCall(call); got != want {
|
|
t.Errorf("homeCall(%q) = %q, want %q", call, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Operational suffixes must resolve to the bare call WITHOUT a provider query on
|
|
// the slashed form; entity- and area-changing forms must not be stripped.
|
|
func TestStripOpSuffix(t *testing.T) {
|
|
strip := map[string]string{
|
|
"F4LYI/M": "F4LYI", "F4LYI/MM": "F4LYI", "F4LYI/AM": "F4LYI",
|
|
"F4LYI/P": "F4LYI", "F4LYI/QRP": "F4LYI", "F4LYI/p": "F4LYI",
|
|
"F4BPO/M/P": "F4BPO",
|
|
}
|
|
for call, want := range strip {
|
|
got, ok := stripOpSuffix(call)
|
|
if !ok || got != want {
|
|
t.Errorf("stripOpSuffix(%q) = %q,%v — want %q,true", call, got, ok, want)
|
|
}
|
|
}
|
|
// These change the entity or the call area: they are real, separately
|
|
// registered forms and must be queried exactly as entered.
|
|
for _, call := range []string{"JW/OR1A", "VP8/F4BPO", "F4BPO/8", "DL/F4NIE", "OH2BH", "F4BPO/W6"} {
|
|
if got, ok := stripOpSuffix(call); ok {
|
|
t.Errorf("stripOpSuffix(%q) stripped to %q — it changes entity/area and must be kept", call, got)
|
|
}
|
|
}
|
|
}
|