-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathredis_array_reply_reader_test.go
More file actions
75 lines (60 loc) · 1.64 KB
/
redis_array_reply_reader_test.go
File metadata and controls
75 lines (60 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package goscriptor_test
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
"github.com/yshengliao/goscriptor"
)
func TestRedisArrayReplyReader_Basic(t *testing.T) {
assert := assert.New(t)
reply := []interface{}{"1", "two", int64(3), []interface{}{"nested1", "nested2"}}
r := goscriptor.NewRedisArrayReplyReader(reply)
assert.Equal(4, r.GetLength())
assert.True(r.HasNext())
v, err := r.ReadInt32(0)
assert.Nil(err)
assert.Equal(int32(1), v)
assert.True(r.HasNext())
s := r.ReadString()
assert.Equal("two", s)
i64, err := r.ReadInt64(0)
assert.Nil(err)
assert.Equal(int64(3), i64)
assert.True(r.HasNext())
nested := r.ReadArray()
assert.NotNil(nested)
assert.Equal(2, nested.GetLength())
assert.True(nested.HasNext())
assert.Equal("nested1", nested.ReadString())
nested.SkipValue()
assert.False(nested.HasNext())
assert.Equal("", nested.ReadString())
assert.False(r.HasNext())
assert.Equal("", r.ReadString())
dv, err := r.ReadInt32(42)
assert.Nil(err)
assert.Equal(int32(42), dv)
}
func TestRedisArrayReplyReader_ForEach(t *testing.T) {
assert := assert.New(t)
arr := []interface{}{"a", "b", "c"}
r := goscriptor.NewRedisArrayReplyReader(arr)
collected := []string{}
err := r.ForEach(func(i int, v *goscriptor.RedisReplyValue) error {
collected = append(collected, v.AsString())
return nil
})
assert.Nil(err)
assert.Equal([]string{"a", "b", "c"}, collected)
r2 := goscriptor.NewRedisArrayReplyReader(arr)
count := 0
err = r2.ForEach(func(i int, v *goscriptor.RedisReplyValue) error {
count++
if i == 1 {
return errors.New("stop")
}
return nil
})
assert.NotNil(err)
assert.Equal(2, count)
}