add zset withsocre float (#2689)

* add zset withsocre float

* update

* add IncrbyFloat,HincrbyFloat

Co-authored-by: Kevin Wan <wanjunfeng@gmail.com>
This commit is contained in:
Alonexy
2023-01-12 22:37:14 +08:00
committed by GitHub
parent 4d7fa08b0b
commit 00ff50c2cc
2 changed files with 372 additions and 2 deletions

View File

@@ -1008,6 +1008,111 @@ func TestRedis_SortedSet(t *testing.T) {
})
}
func TestRedis_SortedSetByFloat64(t *testing.T) {
runOnRedis(t, func(client *Redis) {
ok, err := client.ZaddFloat("key", 10.345, "value1")
assert.Nil(t, err)
assert.True(t, ok)
val, err := client.ZscoreByFloat("key", "value1")
assert.Nil(t, err)
assert.Equal(t, 10.345, val)
_, _ = client.ZaddFloat("key", 10.346, "value2")
_, err = New(client.Addr, badType()).ZRevRangeWithScoresByFloat("key", 0, -1)
assert.NotNil(t, err)
pairs, err := client.ZRevRangeWithScoresByFloat("key", 0, -1)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value2",
Score: 10.346,
},
{
Key: "value1",
Score: 10.345,
},
}, pairs)
pairs, err = client.ZrangeWithScoresByFloat("key", 0, -1)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value1",
Score: 10.345,
},
{
Key: "value2",
Score: 10.346,
},
}, pairs)
_, err = New(client.Addr, badType()).ZrangebyscoreWithScoresByFloat("key", 0, 20)
assert.NotNil(t, err)
pairs, err = client.ZrangebyscoreWithScoresByFloat("key", 0,20)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value1",
Score: 10.345,
},
{
Key: "value2",
Score: 10.346,
},
}, pairs)
_, err = New(client.Addr, badType()).ZrangebyscoreWithScoresByFloatAndLimit(
"key", 10.1, 12.2, 1, 1)
assert.NotNil(t, err)
pairs, err = client.ZrangebyscoreWithScoresByFloatAndLimit("key", 10.1, 12.2, 1, 1)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value2",
Score: 10.346,
},
}, pairs)
_, err = New(client.Addr, badType()).ZrevrangebyscoreWithScoresByFloat("key", 10, 12)
assert.NotNil(t, err)
pairs, err = client.ZrevrangebyscoreWithScoresByFloat("key", 10, 12)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value2",
Score: 10.346,
},
{
Key: "value1",
Score: 10.345,
},
}, pairs)
_, err = New(client.Addr, badType()).ZrevrangebyscoreWithScoresByFloatAndLimit(
"key", 10, 12, 1, 1)
assert.NotNil(t, err)
pairs, err = client.ZrevrangebyscoreWithScoresByFloatAndLimit("key", 10, 12, 1, 1)
assert.Nil(t, err)
assert.EqualValues(t, []PairFloat{
{
Key: "value1",
Score: 10.345,
},
}, pairs)
})
}
func TestRedis_IncrbyFloat(t *testing.T) {
runOnRedis(t, func(client *Redis) {
incrVal, err := client.IncrbyFloat("key", 0.002)
assert.Nil(t, err)
assert.Equal(t, 0.002,incrVal)
incrVal2, err := client.IncrbyFloat("key", -0.001)
assert.Nil(t, err)
assert.Equal(t, 0.001,incrVal2)
hincrVal ,err := client.HincrbyFloat("hkey","i",0.002)
assert.Nil(t, err)
assert.Equal(t, 0.002,hincrVal)
hincrVal2 ,err := client.HincrbyFloat("hkey","i",-0.001)
assert.Nil(t, err)
assert.Equal(t, 0.001,hincrVal2)
})
}
func TestRedis_Pipelined(t *testing.T) {
runOnRedis(t, func(client *Redis) {
assert.NotNil(t, New(client.Addr, badType()).Pipelined(func(pipeliner Pipeliner) error {