dsfx/internal/lib/frame/frame_test.go

72 lines
1.4 KiB
Go

package frame_test
import (
"bufio"
"bytes"
"testing"
"koti.casa/numenor-labs/dsfx/internal/lib/frame"
)
func TestLenPrefixedWriteTo(t *testing.T) {
// Given ...
buf := bytes.NewBuffer(nil)
msg := []byte("Hello, World!")
expectedBytesWritten := len(msg) + 2
// When ...
n, err := frame.New(msg).WriteTo(buf)
// Then ...
if err != nil {
t.Fatalf("failed to write frame: %v", err)
return
}
if n != int64(expectedBytesWritten) {
t.Fatalf("expected %d bytes written, got %d", expectedBytesWritten, n)
return
}
if buf.Len() != expectedBytesWritten {
t.Fatalf("expected %d bytes in buffer, got %d", expectedBytesWritten, buf.Len())
return
}
if !bytes.Equal(buf.Bytes()[2:], msg) {
t.Fatalf("expected %q in buffer, got %q", msg, buf.Bytes()[2:])
return
}
}
func TestLenPrefixedReadFrom(t *testing.T) {
// Given ...
msg := []byte{0x00, 0x0d}
msg = append(msg, []byte("Hello, World!")...)
buf := bufio.NewReader(bytes.NewBuffer(msg))
expectedBytesRead := len(msg)
// When ...
f := frame.New(nil)
n, err := f.ReadFrom(buf)
// Then ...
if err != nil {
t.Fatalf("failed to write frame: %v", err)
return
}
if n != int64(expectedBytesRead) {
t.Fatalf("expected %d bytes read, got %d", expectedBytesRead, n)
return
}
if !bytes.Equal(f.Contents(), []byte("Hello, World!")) {
t.Fatalf("expected %q, got %q", []byte("Hello, World!"), f.Contents())
return
}
}