package wire

import (
	"bytes"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestWriteMessage(t *testing.T) {
	s, b := NewTestSender()
	err := SendMessageString(s, "hello")
	assert.NoError(t, err)
	assert.Equal(t, "0005hello", b.String())
}

func TestWriteEmptyMessage(t *testing.T) {
	s, b := NewTestSender()
	err := SendMessageString(s, "")
	assert.NoError(t, err)
	assert.Equal(t, "0000", b.String())
}

func NewTestSender() (Sender, *TestWriter) {
	w := new(TestWriter)
	return NewSender(w), w
}

// TestWriter is a wrapper around a bytes.Buffer that implements io.Closer.
type TestWriter struct {
	bytes.Buffer
}

func (b *TestWriter) Close() error {
	// No-op.
	return nil
}