diff options
Diffstat (limited to 'transport/stream_conn_test.go')
| -rw-r--r-- | transport/stream_conn_test.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/transport/stream_conn_test.go b/transport/stream_conn_test.go new file mode 100644 index 0000000..c0d996f --- /dev/null +++ b/transport/stream_conn_test.go @@ -0,0 +1,69 @@ +package transport + +import ( + pb "buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go/meshtastic" + "bytes" + "github.com/stretchr/testify/require" + "golang.org/x/sync/errgroup" + "google.golang.org/protobuf/proto" + "net" + "testing" +) + +func TestStreamConn(t *testing.T) { + radioNetConn, clientNetConn := net.Pipe() + var client *StreamConn + var radio *StreamConn + + // Test client -> radio + sent := &pb.ToRadio{ + PayloadVariant: &pb.ToRadio_WantConfigId{ + WantConfigId: 123, + }, + } + received := &pb.ToRadio{} + eg := errgroup.Group{} + eg.Go(func() error { + var err error + client, err = NewClientStreamConn(clientNetConn) + require.NoError(t, err) + return client.Write(sent) + }) + eg.Go(func() error { + radio = NewRadioStreamConn(radioNetConn) + return radio.Read(received) + }) + require.NoError(t, eg.Wait()) + require.True(t, proto.Equal(sent, received)) + + // Test radio -> client + replySent := &pb.FromRadio{ + Id: 123, + PayloadVariant: &pb.FromRadio_Config{ + Config: &pb.Config{ + PayloadVariant: &pb.Config_Device{ + Device: &pb.Config_DeviceConfig{ + Role: pb.Config_DeviceConfig_ROUTER, + }, + }, + }, + }, + } + replyReceived := &pb.FromRadio{} + eg = errgroup.Group{} + eg.Go(func() error { + return radio.Write(replySent) + }) + eg.Go(func() error { + return client.Read(replyReceived) + }) + require.NoError(t, eg.Wait()) + require.True(t, proto.Equal(replySent, replyReceived)) +} + +func Test_writeStreamHeader(t *testing.T) { + out := bytes.NewBuffer(nil) + err := writeStreamHeader(out, 257) + require.NoError(t, err) + require.Equal(t, []byte{Start1, Start2, 0x01, 0x01}, out.Bytes()) +} |
