2025-03-09 15:52:33 -04:00
|
|
|
package frame_test
|
2025-03-08 15:07:27 -05:00
|
|
|
|
|
|
|
import (
|
|
|
|
"bufio"
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
|
|
|
|
2025-03-09 15:52:33 -04:00
|
|
|
"koti.casa/numenor-labs/dsfx/pkg/frame"
|
2025-03-08 15:07:27 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestLenPrefixedWriteTo(t *testing.T) {
|
|
|
|
// Given ...
|
|
|
|
buf := bytes.NewBuffer(nil)
|
|
|
|
msg := []byte("Hello, World!")
|
|
|
|
expectedBytesWritten := len(msg) + 2
|
|
|
|
|
|
|
|
// When ...
|
|
|
|
|
2025-03-09 15:52:33 -04:00
|
|
|
n, err := frame.NewFrame(msg).WriteTo(buf)
|
2025-03-08 15:07:27 -05:00
|
|
|
|
|
|
|
// 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 ...
|
2025-03-09 15:52:33 -04:00
|
|
|
f := frame.NewFrame(nil)
|
2025-03-08 15:07:27 -05:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|