mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-14 08:52:44 +00:00
314 lines
5.1 KiB
Go
314 lines
5.1 KiB
Go
package goredis
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestAppend(t *testing.T) {
|
|
r.Del("key")
|
|
n, err := r.Append("key", "value")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 5 {
|
|
t.Fail()
|
|
}
|
|
n, err = r.Append("key", "value")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 10 {
|
|
t.Fail()
|
|
}
|
|
r.Del("key")
|
|
r.LPush("key", "value")
|
|
if _, err := r.Append("key", "value"); err == nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestBitCount(t *testing.T) {
|
|
r.Set("key", "foobar", 0, 0, false, false)
|
|
n, err := r.BitCount("key", 0, -1)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 26 {
|
|
t.Fail()
|
|
}
|
|
n, _ = r.BitCount("key", 0, 0)
|
|
if n != 4 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestBitOp(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if _, err := r.BitOp("NOT", "key2", "key"); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestDecr(t *testing.T) {
|
|
r.Set("key", "10", 0, 0, false, false)
|
|
if n, err := r.Decr("key"); err != nil {
|
|
t.Error(err)
|
|
} else if n != 9 {
|
|
t.Fail()
|
|
}
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if _, err := r.Decr("key"); err == nil {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestDecrby(t *testing.T) {
|
|
r.Set("key", "10", 0, 0, false, false)
|
|
if n, err := r.DecrBy("key", 2); err != nil {
|
|
t.Error(err)
|
|
} else if n != 8 {
|
|
t.Fail()
|
|
}
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if _, err := r.DecrBy("key", 2); err == nil {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestGet(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
if value, err := r.Get("key"); err != nil {
|
|
t.Error(err)
|
|
} else if string(value) != "value" {
|
|
t.Fail()
|
|
}
|
|
r.Del("key")
|
|
if value, _ := r.Get("key"); value != nil {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func BenchmarkGet(b *testing.B) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
for i := 0; i < b.N; i++ {
|
|
r.Get("key")
|
|
}
|
|
}
|
|
|
|
func TestGetBit(t *testing.T) {
|
|
r.SetBit("key", 7, 1)
|
|
n, err := r.GetBit("key", 6)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 0 {
|
|
t.Fail()
|
|
}
|
|
n, _ = r.GetBit("key", 7)
|
|
if n != 1 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestGetRange(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
s, err := r.GetRange("key", 0, -1)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if s != "value" {
|
|
t.Fail()
|
|
}
|
|
s, _ = r.GetRange("key", 0, 0)
|
|
if s != "v" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestGetSet(t *testing.T) {
|
|
r.Del("key")
|
|
old, err := r.GetSet("key", "value")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if old != nil {
|
|
t.Fail()
|
|
}
|
|
old, _ = r.GetSet("key", "")
|
|
if string(old) != "value" {
|
|
t.Fail()
|
|
}
|
|
value, _ := r.Get("key")
|
|
if string(value) != "" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestIncr(t *testing.T) {
|
|
r.Set("key", "10", 0, 0, false, false)
|
|
n, err := r.Incr("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 11 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func BenchmarkIncr(b *testing.B) {
|
|
r.Del("key")
|
|
for i := 0; i < b.N; i++ {
|
|
r.Incr("key")
|
|
}
|
|
}
|
|
|
|
func TestIncrBy(t *testing.T) {
|
|
r.Set("key", "10", 0, 0, false, false)
|
|
n, err := r.IncrBy("key", 2)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 12 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestIncrByFloat(t *testing.T) {
|
|
r.Set("key", "10", 0, 0, false, false)
|
|
f, err := r.IncrByFloat("key", 0.1)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if f != 10.1 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestMGet(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
ret, err := r.MGet("key", "key1")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if len(ret) != 2 {
|
|
t.Fail()
|
|
}
|
|
if string(ret[0]) != "value" {
|
|
t.Fail()
|
|
}
|
|
if ret[1] != nil {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestMSet(t *testing.T) {
|
|
pairs := map[string]string{
|
|
"key": "value",
|
|
"key1": "value1",
|
|
}
|
|
if err := r.MSet(pairs); err != nil {
|
|
t.Error(err)
|
|
}
|
|
value, _ := r.Get("key1")
|
|
if string(value) != "value1" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestMSetnx(t *testing.T) {
|
|
r.Del("key")
|
|
r.Set("key1", "value", 0, 0, false, false)
|
|
pairs := map[string]string{
|
|
"key": "value",
|
|
"key1": "value1",
|
|
}
|
|
if b, err := r.MSetnx(pairs); err != nil {
|
|
t.Error(err)
|
|
} else if b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestPSetex(t *testing.T) {
|
|
if err := r.PSetex("key", 100, "value"); err != nil {
|
|
t.Error(err)
|
|
}
|
|
n, _ := r.PTTL("key")
|
|
if n < 0 {
|
|
t.Fail()
|
|
}
|
|
v, _ := r.Get("key")
|
|
if string(v) != "value" {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSet(t *testing.T) {
|
|
if err := r.Set("key", "value", 0, 0, false, false); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestSetEmptyValue(t *testing.T) {
|
|
if err := r.Set("key", "", 0, 0, false, false); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func BenchmarkSet(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
}
|
|
}
|
|
|
|
func TestSetBit(t *testing.T) {
|
|
if _, err := r.SetBit("key", 7, 1); err != nil {
|
|
t.Error(err)
|
|
}
|
|
bit, _ := r.GetBit("key", 7)
|
|
if bit != 1 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSetex(t *testing.T) {
|
|
if err := r.Setex("key", 10, "value"); err != nil {
|
|
t.Error(err)
|
|
}
|
|
n, _ := r.TTL("key")
|
|
if n < 0 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSetnx(t *testing.T) {
|
|
r.Del("key")
|
|
if b, err := r.Setnx("key", "value"); err != nil {
|
|
t.Error(err)
|
|
} else if !b {
|
|
t.Fail()
|
|
}
|
|
if b, _ := r.Setnx("key", "value"); b {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestSetRange(t *testing.T) {
|
|
r.Del("key")
|
|
if n, err := r.SetRange("key", 2, "value"); err != nil {
|
|
t.Error(err)
|
|
} else if n != 7 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestStrlen(t *testing.T) {
|
|
r.Set("key", "value", 0, 0, false, false)
|
|
n, err := r.StrLen("key")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != 5 {
|
|
t.Fail()
|
|
}
|
|
}
|