fix(lotw): MY_CNTY must not sink a non-US station's upload
TQSL validates MY_CNTY against the ADIF secondary-subdivision list, which is the US county enumeration — 'XX,County' with a two-letter state. A Canadian profile produced 'ONTARIO,Kawartha' (the export joined MY_STATE onto the county wholesale) and TQSL refused the whole record. Two layers: adifCounty only prefixes a two-letter state, so exports stop manufacturing the invalid shape; and UploadLoTW scrubs any MY_CNTY that is not the US shape before signing — MY_STATE and MY_GRIDSQUARE already locate the station for LoTW, and the US form survives for the county hunters. Table-tested.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package extsvc
|
||||
|
||||
import "testing"
|
||||
|
||||
// TQSL refuses whole records over a MY_CNTY it cannot validate, and its
|
||||
// validation is the US "XX,County" enumeration — so anything else must be
|
||||
// stripped before signing, and the US shape must survive untouched.
|
||||
func TestScrubMyCnty(t *testing.T) {
|
||||
cases := []struct{ in, want string }{
|
||||
{"<CALL:5>F4BPO<MY_CNTY:16>ONTARIO,Kawartha<MY_STATE:7>ONTARIO<EOR>",
|
||||
"<CALL:5>F4BPO<MY_STATE:7>ONTARIO<EOR>"},
|
||||
{"<MY_CNTY:8>Kawartha<EOR>", "<EOR>"},
|
||||
{"<MY_CNTY:9>NY,Monroe<EOR>", "<MY_CNTY:9>NY,Monroe<EOR>"},
|
||||
{"<CALL:4>K1AB<EOR>", "<CALL:4>K1AB<EOR>"},
|
||||
{"<MY_CNTY:8>Kawartha<EOR>\n<MY_CNTY:9>NY,Monroe<EOR>",
|
||||
"<EOR>\n<MY_CNTY:9>NY,Monroe<EOR>"},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := scrubMyCnty(c.in); got != c.want {
|
||||
t.Errorf("scrubMyCnty(%q) = %q, want %q", c.in, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user