diff options
Diffstat (limited to 'internal/tcp/tcp_test.go')
| -rw-r--r-- | internal/tcp/tcp_test.go | 63 |
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) + } +} |
