72 lines
2.4 KiB
Go
72 lines
2.4 KiB
Go
package antgenius
|
|
|
|
import "testing"
|
|
|
|
func TestHandleAntennaList(t *testing.T) {
|
|
c := New("x", 9007)
|
|
// Names may contain spaces — must be captured up to " tx=".
|
|
c.handleLine("R3|0|antenna 1 name=UB VL2.3 tx=ffff rx=ffff inband=0000")
|
|
c.handleLine("R3|0|antenna 2 name=DX Commander tx=00ff rx=00ff inband=0000")
|
|
st := c.GetStatus()
|
|
if len(st.Antennas) != 2 {
|
|
t.Fatalf("got %d antennas, want 2: %+v", len(st.Antennas), st.Antennas)
|
|
}
|
|
if st.Antennas[0].Index != 1 || st.Antennas[0].Name != "UB VL2.3" {
|
|
t.Errorf("antenna 1 = %+v", st.Antennas[0])
|
|
}
|
|
if st.Antennas[1].Name != "DX Commander" {
|
|
t.Errorf("antenna 2 name = %q", st.Antennas[1].Name)
|
|
}
|
|
}
|
|
|
|
func TestAntennaUnderscoreAndPlaceholder(t *testing.T) {
|
|
c := New("x", 9007)
|
|
c.handleLine("R3|0|antenna 1 name=Hex_Beam tx=ffff rx=ffff inband=0000") // underscore → space
|
|
c.handleLine("R3|0|antenna 4 name=Antenna_4 tx=0000 rx=0000 inband=0000") // default → filtered
|
|
c.handleLine("R3|0|antenna 5 name=antenna 5 tx=0000 rx=0000 inband=0000") // default → filtered
|
|
st := c.GetStatus()
|
|
if len(st.Antennas) != 1 || st.Antennas[0].Name != "Hex Beam" {
|
|
t.Fatalf("want only [Hex Beam], got %+v", st.Antennas)
|
|
}
|
|
}
|
|
|
|
func TestHandlePortStatus(t *testing.T) {
|
|
c := New("x", 9007)
|
|
// Async push after "sub port all": active antenna is txant (fallback rxant).
|
|
c.handleLine("S0|port 1 source=MANUAL band=6 rxant=2 txant=2 inband=0 inhibit=0")
|
|
c.handleLine("S0|port 2 source=AUTO band=0 rxant=0 txant=0 inband=0 inhibit=0")
|
|
st := c.GetStatus()
|
|
if st.PortA != 2 {
|
|
t.Errorf("PortA = %d, want 2", st.PortA)
|
|
}
|
|
if st.PortB != 0 {
|
|
t.Errorf("PortB = %d, want 0 (none)", st.PortB)
|
|
}
|
|
// A "port get" reply (R-line) must parse the same way.
|
|
c.handleLine("R15|0|port 2 source=MANUAL band=3 rxant=5 txant=5 inband=0 inhibit=0")
|
|
if st = c.GetStatus(); st.PortB != 5 {
|
|
t.Errorf("PortB after port get = %d, want 5", st.PortB)
|
|
}
|
|
}
|
|
|
|
func TestPortTxFallbackToRx(t *testing.T) {
|
|
c := New("x", 9007)
|
|
c.handleLine("S0|port 1 source=MANUAL band=6 rxant=3 txant=0 inband=0 inhibit=0")
|
|
if st := c.GetStatus(); st.PortA != 3 {
|
|
t.Errorf("PortA = %d, want 3 (rx fallback when tx=0)", st.PortA)
|
|
}
|
|
}
|
|
|
|
func TestKvInt(t *testing.T) {
|
|
s := "port 1 source=MANUAL band=6 rxant=2 txant=7 inhibit=0"
|
|
if v := kvInt(s, "txant"); v != 7 {
|
|
t.Errorf("txant = %d, want 7", v)
|
|
}
|
|
if v := kvInt(s, "rxant"); v != 2 {
|
|
t.Errorf("rxant = %d, want 2", v)
|
|
}
|
|
if v := kvInt(s, "missing"); v != 0 {
|
|
t.Errorf("missing = %d, want 0", v)
|
|
}
|
|
}
|