mirror of
https://github.com/HDT3213/godis.git
synced 2025-10-05 16:57:06 +08:00
refactor command table
This commit is contained in:
118
string_test.go
118
string_test.go
@@ -13,55 +13,55 @@ import (
|
||||
var testDB = makeTestDB()
|
||||
|
||||
func TestSet(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key := utils2.RandString(10)
|
||||
value := utils2.RandString(10)
|
||||
|
||||
// normal set
|
||||
Set(testDB, utils2.ToBytesList(key, value))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execSet(testDB, utils2.ToBytesList(key, value))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := reply.MakeBulkReply([]byte(value))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
|
||||
// set nx
|
||||
actual = Set(testDB, utils2.ToBytesList(key, value, "NX"))
|
||||
actual = execSet(testDB, utils2.ToBytesList(key, value, "NX"))
|
||||
if _, ok := actual.(*reply.NullBulkReply); !ok {
|
||||
t.Error("expected true actual false")
|
||||
}
|
||||
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key = utils2.RandString(10)
|
||||
value = utils2.RandString(10)
|
||||
Set(testDB, utils2.ToBytesList(key, value, "NX"))
|
||||
actual = Get(testDB, utils2.ToBytesList(key))
|
||||
execSet(testDB, utils2.ToBytesList(key, value, "NX"))
|
||||
actual = execGet(testDB, utils2.ToBytesList(key))
|
||||
expected = reply.MakeBulkReply([]byte(value))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
|
||||
// set xx
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key = utils2.RandString(10)
|
||||
value = utils2.RandString(10)
|
||||
actual = Set(testDB, utils2.ToBytesList(key, value, "XX"))
|
||||
actual = execSet(testDB, utils2.ToBytesList(key, value, "XX"))
|
||||
if _, ok := actual.(*reply.NullBulkReply); !ok {
|
||||
t.Error("expected true actually false ")
|
||||
}
|
||||
|
||||
Set(testDB, utils2.ToBytesList(key, value))
|
||||
Set(testDB, utils2.ToBytesList(key, value, "XX"))
|
||||
actual = Get(testDB, utils2.ToBytesList(key))
|
||||
execSet(testDB, utils2.ToBytesList(key, value))
|
||||
execSet(testDB, utils2.ToBytesList(key, value, "XX"))
|
||||
actual = execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, value)
|
||||
|
||||
// set ex
|
||||
Del(testDB, utils2.ToBytesList(key))
|
||||
testDB.Remove(key)
|
||||
ttl := "1000"
|
||||
Set(testDB, utils2.ToBytesList(key, value, "EX", ttl))
|
||||
actual = Get(testDB, utils2.ToBytesList(key))
|
||||
execSet(testDB, utils2.ToBytesList(key, value, "EX", ttl))
|
||||
actual = execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, value)
|
||||
actual = TTL(testDB, utils2.ToBytesList(key))
|
||||
actual = execTTL(testDB, utils2.ToBytesList(key))
|
||||
intResult, ok := actual.(*reply.IntReply)
|
||||
if !ok {
|
||||
t.Error(fmt.Sprintf("expected int reply, actually %s", actual.ToBytes()))
|
||||
@@ -73,12 +73,12 @@ func TestSet(t *testing.T) {
|
||||
}
|
||||
|
||||
// set px
|
||||
Del(testDB, utils2.ToBytesList(key))
|
||||
testDB.Remove(key)
|
||||
ttlPx := "1000000"
|
||||
Set(testDB, utils2.ToBytesList(key, value, "PX", ttlPx))
|
||||
actual = Get(testDB, utils2.ToBytesList(key))
|
||||
execSet(testDB, utils2.ToBytesList(key, value, "PX", ttlPx))
|
||||
actual = execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, value)
|
||||
actual = TTL(testDB, utils2.ToBytesList(key))
|
||||
actual = execTTL(testDB, utils2.ToBytesList(key))
|
||||
intResult, ok = actual.(*reply.IntReply)
|
||||
if !ok {
|
||||
t.Error(fmt.Sprintf("expected int reply, actually %s", actual.ToBytes()))
|
||||
@@ -91,17 +91,17 @@ func TestSet(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetNX(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key := utils2.RandString(10)
|
||||
value := utils2.RandString(10)
|
||||
SetNX(testDB, utils2.ToBytesList(key, value))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execSetNX(testDB, utils2.ToBytesList(key, value))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := reply.MakeBulkReply([]byte(value))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
|
||||
actual = SetNX(testDB, utils2.ToBytesList(key, value))
|
||||
actual = execSetNX(testDB, utils2.ToBytesList(key, value))
|
||||
expected2 := reply.MakeIntReply(int64(0))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected2.ToBytes()) {
|
||||
t.Error("expected: " + string(expected2.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
@@ -109,15 +109,15 @@ func TestSetNX(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetEX(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key := utils2.RandString(10)
|
||||
value := utils2.RandString(10)
|
||||
ttl := "1000"
|
||||
|
||||
SetEX(testDB, utils2.ToBytesList(key, ttl, value))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execSetEX(testDB, utils2.ToBytesList(key, ttl, value))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, value)
|
||||
actual = TTL(testDB, utils2.ToBytesList(key))
|
||||
actual = execTTL(testDB, utils2.ToBytesList(key))
|
||||
intResult, ok := actual.(*reply.IntReply)
|
||||
if !ok {
|
||||
t.Error(fmt.Sprintf("expected int reply, actually %s", actual.ToBytes()))
|
||||
@@ -130,15 +130,15 @@ func TestSetEX(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestPSetEX(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key := utils2.RandString(10)
|
||||
value := utils2.RandString(10)
|
||||
ttl := "1000000"
|
||||
|
||||
PSetEX(testDB, utils2.ToBytesList(key, ttl, value))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execPSetEX(testDB, utils2.ToBytesList(key, ttl, value))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, value)
|
||||
actual = PTTL(testDB, utils2.ToBytesList(key))
|
||||
actual = execPTTL(testDB, utils2.ToBytesList(key))
|
||||
intResult, ok := actual.(*reply.IntReply)
|
||||
if !ok {
|
||||
t.Error(fmt.Sprintf("expected int reply, actually %s", actual.ToBytes()))
|
||||
@@ -151,7 +151,7 @@ func TestPSetEX(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMSet(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
size := 10
|
||||
keys := make([]string, size)
|
||||
values := make([][]byte, size)
|
||||
@@ -162,8 +162,8 @@ func TestMSet(t *testing.T) {
|
||||
values[i] = []byte(value)
|
||||
args = append(args, keys[i], value)
|
||||
}
|
||||
MSet(testDB, utils2.ToBytesList(args...))
|
||||
actual := MGet(testDB, utils2.ToBytesList(keys...))
|
||||
execMSet(testDB, utils2.ToBytesList(args...))
|
||||
actual := execMGet(testDB, utils2.ToBytesList(keys...))
|
||||
expected := reply.MakeMultiBulkReply(values)
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
@@ -171,40 +171,40 @@ func TestMSet(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIncr(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
size := 10
|
||||
key := utils2.RandString(10)
|
||||
for i := 0; i < size; i++ {
|
||||
Incr(testDB, utils2.ToBytesList(key))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execIncr(testDB, utils2.ToBytesList(key))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := reply.MakeBulkReply([]byte(strconv.FormatInt(int64(i+1), 10)))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
}
|
||||
for i := 0; i < size; i++ {
|
||||
IncrBy(testDB, utils2.ToBytesList(key, "-1"))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execIncrBy(testDB, utils2.ToBytesList(key, "-1"))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := reply.MakeBulkReply([]byte(strconv.FormatInt(int64(size-i-1), 10)))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
}
|
||||
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key = utils2.RandString(10)
|
||||
for i := 0; i < size; i++ {
|
||||
IncrBy(testDB, utils2.ToBytesList(key, "1"))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execIncrBy(testDB, utils2.ToBytesList(key, "1"))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := reply.MakeBulkReply([]byte(strconv.FormatInt(int64(i+1), 10)))
|
||||
if !utils.BytesEquals(actual.ToBytes(), expected.ToBytes()) {
|
||||
t.Error("expected: " + string(expected.ToBytes()) + ", actual: " + string(actual.ToBytes()))
|
||||
}
|
||||
}
|
||||
Del(testDB, utils2.ToBytesList(key))
|
||||
testDB.Remove(key)
|
||||
for i := 0; i < size; i++ {
|
||||
IncrByFloat(testDB, utils2.ToBytesList(key, "-1.0"))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execIncrByFloat(testDB, utils2.ToBytesList(key, "-1.0"))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := -i - 1
|
||||
bulk, ok := actual.(*reply.BulkReply)
|
||||
if !ok {
|
||||
@@ -224,18 +224,18 @@ func TestIncr(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDecr(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
size := 10
|
||||
key := utils2.RandString(10)
|
||||
for i := 0; i < size; i++ {
|
||||
Decr(testDB, utils2.ToBytesList(key))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execDecr(testDB, utils2.ToBytesList(key))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, actual, strconv.Itoa(-i-1))
|
||||
}
|
||||
Del(testDB, utils2.ToBytesList(key))
|
||||
testDB.Remove(key)
|
||||
for i := 0; i < size; i++ {
|
||||
DecrBy(testDB, utils2.ToBytesList(key, "1"))
|
||||
actual := Get(testDB, utils2.ToBytesList(key))
|
||||
execDecrBy(testDB, utils2.ToBytesList(key, "1"))
|
||||
actual := execGet(testDB, utils2.ToBytesList(key))
|
||||
expected := -i - 1
|
||||
bulk, ok := actual.(*reply.BulkReply)
|
||||
if !ok {
|
||||
@@ -255,11 +255,11 @@ func TestDecr(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetSet(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
key := utils2.RandString(10)
|
||||
value := utils2.RandString(10)
|
||||
|
||||
result := GetSet(testDB, utils2.ToBytesList(key, value))
|
||||
result := execGetSet(testDB, utils2.ToBytesList(key, value))
|
||||
_, ok := result.(*reply.NullBulkReply)
|
||||
if !ok {
|
||||
t.Errorf("expect null bulk reply, get: %s", string(result.ToBytes()))
|
||||
@@ -267,23 +267,23 @@ func TestGetSet(t *testing.T) {
|
||||
}
|
||||
|
||||
value2 := utils2.RandString(10)
|
||||
result = GetSet(testDB, utils2.ToBytesList(key, value2))
|
||||
result = execGetSet(testDB, utils2.ToBytesList(key, value2))
|
||||
asserts.AssertBulkReply(t, result, value)
|
||||
result = Get(testDB, utils2.ToBytesList(key))
|
||||
result = execGet(testDB, utils2.ToBytesList(key))
|
||||
asserts.AssertBulkReply(t, result, value2)
|
||||
}
|
||||
|
||||
func TestMSetNX(t *testing.T) {
|
||||
FlushAll(testDB, [][]byte{})
|
||||
execFlushAll(testDB, [][]byte{})
|
||||
size := 10
|
||||
args := make([]string, 0, size*2)
|
||||
for i := 0; i < size; i++ {
|
||||
str := utils2.RandString(10)
|
||||
args = append(args, str, str)
|
||||
}
|
||||
result := MSetNX(testDB, utils2.ToBytesList(args...))
|
||||
result := execMSetNX(testDB, utils2.ToBytesList(args...))
|
||||
asserts.AssertIntReply(t, result, 1)
|
||||
|
||||
result = MSetNX(testDB, utils2.ToBytesList(args[0:4]...))
|
||||
result = execMSetNX(testDB, utils2.ToBytesList(args[0:4]...))
|
||||
asserts.AssertIntReply(t, result, 0)
|
||||
}
|
||||
|
Reference in New Issue
Block a user