package lookup import ( "encoding/xml" "strings" "testing" ) // QRZ sends the island reference and OpsLog read past it. // // It matters more for IOTA than it would for another award: unlike POTA there // is no live "who is on an island right now" feed anywhere, so the callbook // record is the practical source — and it is known BEFORE the contact is // logged, which is when it is useful. func TestQRZCallsignCarriesIOTA(t *testing.T) { const body = ` F5IRH Max France IN87ki 14 EU-048 abc ` var resp qrzDB if err := xml.Unmarshal([]byte(body), &resp); err != nil { t.Fatalf("unmarshal: %v", err) } if resp.Callsign.IOTA != "EU-048" { t.Fatalf("the tag decoded as %q — the field is not being read", resp.Callsign.IOTA) } // And a record with no island must not invent one. var none qrzDB if err := xml.Unmarshal([]byte(strings.Replace(body, "EU-048", "", 1)), &none); err != nil { t.Fatalf("unmarshal: %v", err) } if none.Callsign.IOTA != "" { t.Errorf("IOTA = %q for a record without one", none.Callsign.IOTA) } }