-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathmain_test.go
92 lines (77 loc) · 2.02 KB
/
main_test.go
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package main
import (
"bytes"
"net"
"testing"
"github.com/dddpaul/gonc/tcp"
"github.com/dddpaul/gonc/udp"
"github.com/stretchr/testify/assert"
)
var Host = "127.0.0.1"
var Port = ":9991"
var Input = "Input from my side, пока, £, 语汉"
var InputFromOtherSide = "Input from other side, пока, £, 语汉, 123"
func TestTransferStreams(t *testing.T) {
in := bytes.NewReader([]byte(Input))
out := new(bytes.Buffer)
ready := make(chan bool, 1)
done := make(chan bool, 1)
// Send data from "my" side
go func() {
<-ready
con, err := net.Dial("tcp", Host+Port)
assert.Nil(t, err)
tcp.TransferStreams(con, in, out)
done <- true
}()
// Start server on the "other" side
ln, err := net.Listen("tcp", Port)
assert.Nil(t, err)
ready <- true
con, err := ln.Accept()
assert.Nil(t, err)
// Read data on the "other" side
buf := make([]byte, 1024)
n, err := con.Read(buf)
assert.Nil(t, err)
assert.Equal(t, Input, string(buf[0:n]))
// Send data from the "other" side
n, err = con.Write([]byte(InputFromOtherSide))
assert.Nil(t, err)
err = con.Close()
assert.Nil(t, err)
<-done
assert.Equal(t, InputFromOtherSide, string(out.Bytes()[0:n]))
}
func TestTransferPackets(t *testing.T) {
in := bytes.NewReader([]byte(Input))
out := new(bytes.Buffer)
ready := make(chan bool, 1)
done := make(chan bool, 1)
// Send data from "my" side
go func() {
<-ready
con, err := net.Dial("udp", Host+Port)
assert.Nil(t, err)
udp.TransferPackets(con, in, out)
done <- true
}()
// Start server on the "other" side
con, err := net.ListenPacket("udp", Port)
assert.Nil(t, err)
ready <- true
// Read data on the "other" side
buf := make([]byte, 1024)
n, a, err := con.ReadFrom(buf)
assert.Nil(t, err)
assert.Equal(t, Input, string(buf[0:n]))
// Send data from the "other" side
n, err = con.WriteTo([]byte(InputFromOtherSide), a)
assert.Nil(t, err)
_, err = con.WriteTo([]byte("~.\n"), a)
assert.Nil(t, err)
err = con.Close()
assert.Nil(t, err)
<-done
assert.Equal(t, InputFromOtherSide, string(out.Bytes()[0:n]))
}