1
0
mirror of https://github.com/Luzifer/cloudkeys-go.git synced 2024-09-20 08:02:57 +00:00
cloudkeys-go/vendor/github.com/xuyu/goredis/keys_test.go

246 lines
4.3 KiB
Go
Raw Normal View History

2015-07-30 15:43:22 +00:00
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()
}
}