mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-08 22:20:05 +00:00
245 lines
4.3 KiB
Go
245 lines
4.3 KiB
Go
package goredis
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestDel(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if n, err := r.Del("key"); err != nil {
|
|
t.Error(err)
|
|
} else if n != 1 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestDump(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
data, err := r.Dump("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if data == nil || len(data) == 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestExists(t *testing.T) {
|
|
r.Del("key")
|
|
b, err := r.Exists("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestExpire(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if b, err := r.Expire("key", 10); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
if n, err := r.TTL("key"); err != nil {
|
|
t.Error(err)
|
|
} else if n != 10 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestExpireAt(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if b, err := r.ExpireAt("key", time.Now().Add(10*time.Second).Unix()); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
if n, err := r.TTL("key"); err != nil {
|
|
t.Error(err)
|
|
} else if n < 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestKeys(t *testing.T) {
|
|
r.FlushDB()
|
|
keys, err := r.Keys("*")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if len(keys) != 0 {
|
|
t.Fail()
|
|
}
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
keys, err = r.Keys("*")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if len(keys) != 1 || keys[0] != "key" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestMove(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if _, err := r.Move("key", db+1); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestObject(t *testing.T) {
|
|
r.Del("key")
|
|
r.LPush("key", "hello world")
|
|
if rp, err := r.Object("refcount", "key"); err != nil {
|
|
t.Error(err)
|
|
} else if rp.Type != IntegerReply {
|
|
t.Fail()
|
|
}
|
|
if rp, err := r.Object("encoding", "key"); err != nil {
|
|
t.Error(err)
|
|
} else if rp.Type != BulkReply {
|
|
t.Fail()
|
|
}
|
|
if rp, err := r.Object("idletime", "key"); err != nil {
|
|
t.Error(err)
|
|
} else if rp.Type != IntegerReply {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestPersist(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
r.Expire("key", 500)
|
|
if n, _ := r.TTL("key"); n < 0 {
|
|
t.Fail()
|
|
}
|
|
if b, err := r.Persist("key"); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
if n, _ := r.TTL("key"); n > 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestPExpire(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if b, err := r.PExpire("key", 100); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestPExpireAt(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if b, err := r.PExpireAt("key", time.Now().Add(500*time.Second).Unix()*1000); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestPTTL(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
r.PExpire("key", 1000)
|
|
if n, err := r.PTTL("key"); err != nil {
|
|
t.Error(err)
|
|
} else if n < 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestRandomKey(t *testing.T) {
|
|
r.FlushDB()
|
|
key, err := r.RandomKey()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if key != nil {
|
|
t.Fail()
|
|
}
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
key, _ = r.RandomKey()
|
|
if string(key) != "key" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestRename(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if err := r.Rename("key", "newkey"); err != nil {
|
|
t.Error(err)
|
|
}
|
|
b, _ := r.Exists("key")
|
|
if b {
|
|
t.Fail()
|
|
}
|
|
v, _ := r.Get("newkey")
|
|
if string(v) != "value" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestRenamenx(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
r.Set("newkey", "value", 0, 0, false, false)
|
|
if b, err := r.Renamenx("key", "newkey"); err != nil {
|
|
t.Error(err)
|
|
} else if b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestRestore(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
data, _ := r.Dump("key")
|
|
r.Del("key")
|
|
if err := r.Restore("key", 0, string(data)); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestTTL(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
r.Expire("key", 100)
|
|
n, err := r.TTL("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n < 0 {
|
|
t.Fail()
|
|
}
|
|
r.Persist("key")
|
|
n, _ = r.TTL("key")
|
|
if n > 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestType(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
ty, err := r.Type("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if ty != "string" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestScan(t *testing.T) {
|
|
r.FlushDB()
|
|
cursor, list, err := r.Scan(0, "", 0)
|
|
if err != nil {
|
|
t.Error(err)
|
|
} else if len(list) != 0 {
|
|
t.Fail()
|
|
} else if cursor != 0 {
|
|
t.Fail()
|
|
}
|
|
}
|