1
0
mirror of https://github.com/Luzifer/cloudkeys-go.git synced 2024-09-19 23:52:57 +00:00
cloudkeys-go/vendor/github.com/xuyu/goredis/strings_test.go

315 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()
}
}