summaryrefslogtreecommitdiff
path: root/internal/tcp/tcp_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/tcp/tcp_test.go')
-rw-r--r--internal/tcp/tcp_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/internal/tcp/tcp_test.go b/internal/tcp/tcp_test.go
new file mode 100644
index 0000000..9b4d61a
--- /dev/null
+++ b/internal/tcp/tcp_test.go
@@ -0,0 +1,63 @@
+package tcp
+
+import (
+ "testing"
+)
+
+type readTest struct {
+ sizeWritten *bool
+ sizeRead *bool
+ sizeBytes []byte
+ messageBytes []byte
+}
+
+func (rt readTest) Write(b []byte) (n int, err error) {
+ if !*rt.sizeWritten {
+ copy(rt.sizeBytes, b)
+ *rt.sizeWritten = true
+ } else {
+ copy(rt.messageBytes, b)
+ }
+
+ return len(b), nil
+}
+
+func (rt readTest) Read(b []byte) (n int, err error) {
+ if !*rt.sizeRead {
+ copy(b, rt.sizeBytes)
+ *rt.sizeRead = true
+ } else {
+ copy(b, rt.messageBytes)
+ }
+ return len(b), nil
+}
+
+func TestReadWrite(t *testing.T) {
+ t.Parallel()
+
+ message := "Hello world!"
+
+ var sizeWritten bool
+ var sizeRead bool
+
+ rt := readTest{
+ sizeWritten: &sizeWritten,
+ sizeRead: &sizeRead,
+ sizeBytes: make([]byte, 8),
+ messageBytes: make([]byte, len([]byte(message))),
+ }
+
+ if err := WriteStr(rt, message); err != nil {
+ t.Errorf(err.Error())
+ }
+
+ response, err := ReadStr(rt)
+ if err != nil {
+ t.Errorf(err.Error())
+ }
+
+ if response != message {
+ t.Errorf("Expected response '%s' to be equal to original message '%s'!",
+ response, message)
+ }
+}