mirror of
https://github.com/HDT3213/godis.git
synced 2025-11-02 21:04:01 +08:00
refactor project structure
This commit is contained in:
102
redis/reply/asserts/assert.go
Normal file
102
redis/reply/asserts/assert.go
Normal file
@@ -0,0 +1,102 @@
|
||||
package asserts
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/hdt3213/godis/datastruct/utils"
|
||||
"github.com/hdt3213/godis/interface/redis"
|
||||
"github.com/hdt3213/godis/redis/reply"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func AssertIntReply(t *testing.T, actual redis.Reply, expected int) {
|
||||
intResult, ok := actual.(*reply.IntReply)
|
||||
if !ok {
|
||||
t.Errorf("expected int reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if intResult.Code != int64(expected) {
|
||||
t.Errorf("expected %d, actually %d, %s", expected, intResult.Code, printStack())
|
||||
}
|
||||
}
|
||||
|
||||
func AssertBulkReply(t *testing.T, actual redis.Reply, expected string) {
|
||||
bulkReply, ok := actual.(*reply.BulkReply)
|
||||
if !ok {
|
||||
t.Errorf("expected bulk reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if !utils.BytesEquals(bulkReply.Arg, []byte(expected)) {
|
||||
t.Errorf("expected %s, actually %s, %s", expected, actual.ToBytes(), printStack())
|
||||
}
|
||||
}
|
||||
|
||||
func AssertStatusReply(t *testing.T, actual redis.Reply, expected string) {
|
||||
statusReply, ok := actual.(*reply.StatusReply)
|
||||
if !ok {
|
||||
// may be a reply.OkReply e.g.
|
||||
expectBytes := reply.MakeStatusReply(expected).ToBytes()
|
||||
if utils.BytesEquals(actual.ToBytes(), expectBytes) {
|
||||
return
|
||||
}
|
||||
t.Errorf("expected bulk reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if statusReply.Status != expected {
|
||||
t.Errorf("expected %s, actually %s, %s", expected, actual.ToBytes(), printStack())
|
||||
}
|
||||
}
|
||||
|
||||
func AssertErrReply(t *testing.T, actual redis.Reply, expected string) {
|
||||
errReply, ok := actual.(reply.ErrorReply)
|
||||
if !ok {
|
||||
expectBytes := reply.MakeErrReply(expected).ToBytes()
|
||||
if utils.BytesEquals(actual.ToBytes(), expectBytes) {
|
||||
return
|
||||
}
|
||||
t.Errorf("expected err reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if errReply.Error() != expected {
|
||||
t.Errorf("expected %s, actually %s, %s", expected, actual.ToBytes(), printStack())
|
||||
}
|
||||
}
|
||||
|
||||
func AssertMultiBulkReply(t *testing.T, actual redis.Reply, expected []string) {
|
||||
multiBulk, ok := actual.(*reply.MultiBulkReply)
|
||||
if !ok {
|
||||
t.Errorf("expected bulk reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if len(multiBulk.Args) != len(expected) {
|
||||
t.Errorf("expected %d elements, actually %d, %s",
|
||||
len(expected), len(multiBulk.Args), printStack())
|
||||
return
|
||||
}
|
||||
for i, v := range multiBulk.Args {
|
||||
str := string(v)
|
||||
if str != expected[i] {
|
||||
t.Errorf("expected %s, actually %s, %s", expected[i], actual, printStack())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func AssertMultiBulkReplySize(t *testing.T, actual redis.Reply, expected int) {
|
||||
multiBulk, ok := actual.(*reply.MultiBulkReply)
|
||||
if !ok {
|
||||
t.Errorf("expected bulk reply, actually %s, %s", actual.ToBytes(), printStack())
|
||||
return
|
||||
}
|
||||
if len(multiBulk.Args) != expected {
|
||||
t.Errorf("expected %d elements, actually %d, %s", expected, len(multiBulk.Args), printStack())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func printStack() string {
|
||||
_, file, no, ok := runtime.Caller(2)
|
||||
if ok {
|
||||
return fmt.Sprintf("at %s#%d", file, no)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user