This commit is contained in:
jiazhizhong
2022-03-10 17:09:03 +08:00
commit 1279635d7f
97 changed files with 10632 additions and 0 deletions

58
pkg/test/assertions.go Normal file
View File

@@ -0,0 +1,58 @@
package test
import (
"path/filepath"
"reflect"
"runtime"
"testing"
)
func Equal(t *testing.T, expected, actual interface{}) {
if !reflect.DeepEqual(expected, actual) {
_, file, line, _ := runtime.Caller(1)
t.Logf("\033[31m%s:%d:\n\n\t %#v (expected)\n\n\t!= %#v (actual)\033[39m\n\n",
filepath.Base(file), line, expected, actual)
t.FailNow()
}
}
func NotEqual(t *testing.T, expected, actual interface{}) {
if reflect.DeepEqual(expected, actual) {
_, file, line, _ := runtime.Caller(1)
t.Logf("\033[31m%s:%d:\n\n\tnexp: %#v\n\n\tgot: %#v\033[39m\n\n",
filepath.Base(file), line, expected, actual)
t.FailNow()
}
}
func Nil(t *testing.T, object interface{}) {
if !isNil(object) {
_, file, line, _ := runtime.Caller(1)
t.Logf("\033[31m%s:%d:\n\n\t <nil> (expected)\n\n\t!= %#v (actual)\033[39m\n\n",
filepath.Base(file), line, object)
t.FailNow()
}
}
func NotNil(t *testing.T, object interface{}) {
if isNil(object) {
_, file, line, _ := runtime.Caller(1)
t.Logf("\033[31m%s:%d:\n\n\tExpected value not to be <nil>\033[39m\n\n",
filepath.Base(file), line)
t.FailNow()
}
}
func isNil(object interface{}) bool {
if object == nil {
return true
}
value := reflect.ValueOf(object)
kind := value.Kind()
if kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() {
return true
}
return false
}

45
pkg/test/fakes.go Normal file
View File

@@ -0,0 +1,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 },
}
}

22
pkg/test/logger.go Normal file
View File

@@ -0,0 +1,22 @@
package test
type Logger interface {
Output(maxdepth int, s string) error
}
type tbLog interface {
Log(...interface{})
}
type testLogger struct {
tbLog
}
func (tl *testLogger) Output(maxdepth int, s string) error {
tl.Log(s)
return nil
}
func NewTestLogger(tbl tbLog) Logger {
return &testLogger{tbl}
}