/
fakes.go
45 lines (39 loc) · 1.79 KB
/
fakes.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
package test
import (
"net"
"time"
)
type FakeNetConn struct {
ReadFunc func([]byte) (int, error)
WriteFunc func([]byte) (int, error)
CloseFunc func() error
LocalAddrFunc func() net.Addr
RemoteAddrFunc func() net.Addr
SetDeadlineFunc func(time.Time) error
SetReadDeadlineFunc func(time.Time) error
SetWriteDeadlineFunc func(time.Time) error
}
func (f FakeNetConn) Read(b []byte) (int, error) { return f.ReadFunc(b) }
func (f FakeNetConn) Write(b []byte) (int, error) { return f.WriteFunc(b) }
func (f FakeNetConn) Close() error { return f.CloseFunc() }
func (f FakeNetConn) LocalAddr() net.Addr { return f.LocalAddrFunc() }
func (f FakeNetConn) RemoteAddr() net.Addr { return f.RemoteAddrFunc() }
func (f FakeNetConn) SetDeadline(t time.Time) error { return f.SetDeadlineFunc(t) }
func (f FakeNetConn) SetReadDeadline(t time.Time) error { return f.SetReadDeadlineFunc(t) }
func (f FakeNetConn) SetWriteDeadline(t time.Time) error { return f.SetWriteDeadlineFunc(t) }
type fakeNetAddr struct{}
func (fakeNetAddr) Network() string { return "" }
func (fakeNetAddr) String() string { return "" }
func NewFakeNetConn() FakeNetConn {
netAddr := fakeNetAddr{}
return FakeNetConn{
ReadFunc: func(b []byte) (int, error) { return 0, nil },
WriteFunc: func(b []byte) (int, error) { return len(b), nil },
CloseFunc: func() error { return nil },
LocalAddrFunc: func() net.Addr { return netAddr },
RemoteAddrFunc: func() net.Addr { return netAddr },
SetDeadlineFunc: func(time.Time) error { return nil },
SetWriteDeadlineFunc: func(time.Time) error { return nil },
SetReadDeadlineFunc: func(time.Time) error { return nil },
}
}