2020-10-13 09:13:43 +03:00
|
|
|
package proto_test
|
2017-02-01 11:36:33 +03:00
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
|
|
. "github.com/onsi/gomega"
|
2021-09-08 16:00:52 +03:00
|
|
|
|
2023-01-23 09:48:54 +03:00
|
|
|
"github.com/redis/go-redis/v9/internal/proto"
|
2017-02-01 11:36:33 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
type testScanSliceStruct struct {
|
|
|
|
ID int
|
|
|
|
Name string
|
|
|
|
}
|
|
|
|
|
2017-02-18 13:10:47 +03:00
|
|
|
func (s *testScanSliceStruct) MarshalBinary() ([]byte, error) {
|
|
|
|
return json.Marshal(s)
|
2017-02-01 11:36:33 +03:00
|
|
|
}
|
|
|
|
|
2017-02-18 13:10:47 +03:00
|
|
|
func (s *testScanSliceStruct) UnmarshalBinary(b []byte) error {
|
|
|
|
return json.Unmarshal(b, s)
|
2017-02-01 11:36:33 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
var _ = Describe("ScanSlice", func() {
|
2017-02-18 13:10:47 +03:00
|
|
|
data := []string{
|
|
|
|
`{"ID":-1,"Name":"Back Yu"}`,
|
|
|
|
`{"ID":1,"Name":"szyhf"}`,
|
|
|
|
}
|
|
|
|
|
|
|
|
It("[]testScanSliceStruct", func() {
|
|
|
|
var slice []testScanSliceStruct
|
2020-10-13 09:13:43 +03:00
|
|
|
err := proto.ScanSlice(data, &slice)
|
2017-02-18 13:10:47 +03:00
|
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
Expect(slice).To(Equal([]testScanSliceStruct{
|
|
|
|
{-1, "Back Yu"},
|
|
|
|
{1, "szyhf"},
|
|
|
|
}))
|
2017-02-01 11:36:33 +03:00
|
|
|
})
|
|
|
|
|
|
|
|
It("var testContainer []*testScanSliceStruct", func() {
|
2017-02-18 13:10:47 +03:00
|
|
|
var slice []*testScanSliceStruct
|
2020-10-13 09:13:43 +03:00
|
|
|
err := proto.ScanSlice(data, &slice)
|
2017-02-01 11:36:33 +03:00
|
|
|
Expect(err).NotTo(HaveOccurred())
|
2017-02-18 13:10:47 +03:00
|
|
|
Expect(slice).To(Equal([]*testScanSliceStruct{
|
|
|
|
{-1, "Back Yu"},
|
|
|
|
{1, "szyhf"},
|
|
|
|
}))
|
2017-02-01 11:36:33 +03:00
|
|
|
})
|
|
|
|
})
|