chore: release v0.26.0
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package udp
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// The wire format, byte for byte. A malformed Free Text is discarded in silence
|
||||
// by the far end, exactly like a malformed Reply — so a wrong byte here shows up
|
||||
// as a button that does nothing.
|
||||
func TestEncodeFreeText(t *testing.T) {
|
||||
got := EncodeFreeText("JTDX", "73 GL", true)
|
||||
want := []byte{
|
||||
0xad, 0xbc, 0xcb, 0xda, // magic
|
||||
0x00, 0x00, 0x00, 0x02, // schema 2
|
||||
0x00, 0x00, 0x00, 0x09, // type 9 — Free Text
|
||||
0x00, 0x00, 0x00, 0x04, 'J', 'T', 'D', 'X',
|
||||
0x00, 0x00, 0x00, 0x05, '7', '3', ' ', 'G', 'L',
|
||||
0x01, // send now
|
||||
}
|
||||
if !bytes.Equal(got, want) {
|
||||
t.Errorf("EncodeFreeText\n got %#v\nwant %#v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
// send=false fills the box without keying — the difference is one byte, and
|
||||
// getting it backwards would transmit when the operator only meant to prepare.
|
||||
func TestEncodeFreeTextWithoutSending(t *testing.T) {
|
||||
got := EncodeFreeText("MSHV", "", false)
|
||||
if got[len(got)-1] != 0x00 {
|
||||
t.Errorf("send flag = %#x, want 0 — this would transmit unasked", got[len(got)-1])
|
||||
}
|
||||
// An empty text is a zero-length QString, never the -1 that means null:
|
||||
// WSJT-X drops a packet with a null where it expects text.
|
||||
if !bytes.Equal(got[len(got)-5:len(got)-1], []byte{0, 0, 0, 0}) {
|
||||
t.Errorf("empty text was not encoded as a zero-length string: % X", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendFreeTextRejectsEmptyID(t *testing.T) {
|
||||
m := &Manager{}
|
||||
if err := m.SendFreeText(" ", "73", true); err == nil {
|
||||
t.Fatal("expected an error for a blank program id")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user