mirror of
https://git.numenor-labs.us/dsfx.git
synced 2025-04-29 16:20:34 +00:00
72 lines
1.4 KiB
Go
72 lines
1.4 KiB
Go
package frame_test
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"testing"
|
|
|
|
"koti.casa/numenor-labs/dsfx/pkg/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
|
|
}
|
|
}
|