1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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)
}
}
|