65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package rda
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func day(s string) time.Time {
|
|
t, err := time.Parse("2006-01-02", s)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return t
|
|
}
|
|
|
|
func TestLoad(t *testing.T) {
|
|
if n := Count(); n < 50000 {
|
|
t.Fatalf("loaded %d callsigns, want the whole database (~58k)", n)
|
|
}
|
|
}
|
|
|
|
// A station with no history: the current district, reported as an assumption.
|
|
func TestCurrentDistrict(t *testing.T) {
|
|
m, ok := Lookup("R0AA", day("2020-05-01"))
|
|
if !ok || m.District != "KK-08" {
|
|
t.Fatalf("R0AA = %+v ok=%v, want KK-08", m, ok)
|
|
}
|
|
if m.Dated {
|
|
t.Errorf("a district with no date range must not be reported as dated")
|
|
}
|
|
}
|
|
|
|
// An expedition: the day decides, and a day outside every period is NOT
|
|
// answered with a neighbouring one.
|
|
func TestDatedDistrict(t *testing.T) {
|
|
m, ok := Lookup("4K4/EK250RA", day("1991-09-15"))
|
|
if !ok || m.District != "CK-05" || !m.Dated {
|
|
t.Fatalf("got %+v ok=%v, want CK-05 dated", m, ok)
|
|
}
|
|
m, ok = Lookup("4K4/EK250RA", day("1991-08-07"))
|
|
if !ok || m.District != "CK-08" {
|
|
t.Fatalf("got %+v ok=%v, want CK-08 on the one-day period", m, ok)
|
|
}
|
|
if _, ok := Lookup("4K4/EK250RA", day("2020-01-01")); ok {
|
|
t.Errorf("a day outside every recorded period must find nothing")
|
|
}
|
|
}
|
|
|
|
// The callsign is matched exactly: a suffix means somewhere else.
|
|
func TestExactCallsign(t *testing.T) {
|
|
if _, ok := Lookup("R0AA/P", day("2020-05-01")); ok {
|
|
t.Errorf("R0AA/P must not resolve to R0AA's district")
|
|
}
|
|
if _, ok := Lookup("", day("2020-05-01")); ok {
|
|
t.Errorf("an empty callsign must find nothing")
|
|
}
|
|
if _, ok := Lookup("F4BPO", day("2020-05-01")); ok {
|
|
t.Errorf("a non-Russian callsign must find nothing")
|
|
}
|
|
// Case and stray spaces are the operator's, not the data's.
|
|
if m, ok := Lookup(" r0aa ", day("2020-05-01")); !ok || m.District != "KK-08" {
|
|
t.Errorf("lookup must be case- and space-insensitive, got %+v ok=%v", m, ok)
|
|
}
|
|
}
|