49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package solar
|
|
|
|
import "testing"
|
|
|
|
// A trimmed sample of the real N0NBH hamqsl.com solarxml.php document.
|
|
const sampleXML = `<?xml version="1.0"?>
|
|
<solar>
|
|
<solardata>
|
|
<source url="http://www.hamqsl.com/solar.html">N0NBH</source>
|
|
<updated>08 Jul 2025 2100 GMT</updated>
|
|
<solarflux>170</solarflux>
|
|
<aindex>5</aindex>
|
|
<kindex>2</kindex>
|
|
<xray>C1.5</xray>
|
|
<sunspots>150</sunspots>
|
|
<geomagfield>QUIET</geomagfield>
|
|
<muf>18.5</muf>
|
|
</solardata>
|
|
</solar>`
|
|
|
|
func TestParseSolar(t *testing.T) {
|
|
d, err := parseSolar([]byte(sampleXML))
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if !d.OK {
|
|
t.Fatalf("expected OK")
|
|
}
|
|
checks := map[string]string{
|
|
"SFI": d.SFI, "SSN": d.SSN, "A": d.AIndex, "K": d.KIndex,
|
|
"XRay": d.XRay, "Geomag": d.GeomagField, "Source": d.Source,
|
|
}
|
|
want := map[string]string{
|
|
"SFI": "170", "SSN": "150", "A": "5", "K": "2",
|
|
"XRay": "C1.5", "Geomag": "QUIET", "Source": "N0NBH",
|
|
}
|
|
for k, got := range checks {
|
|
if got != want[k] {
|
|
t.Errorf("%s = %q, want %q", k, got, want[k])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseSolarBadXML(t *testing.T) {
|
|
if _, err := parseSolar([]byte("not xml")); err == nil {
|
|
t.Fatalf("expected an error for non-XML input")
|
|
}
|
|
}
|