redis/internal/proto/scan_test.go

51 lines
1.0 KiB
Go
Raw Permalink Normal View History

package proto_test
2017-02-01 11:36:33 +03:00
import (
"encoding/json"
2023-01-27 18:00:49 +03:00
. "github.com/bsm/ginkgo/v2"
. "github.com/bsm/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
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
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
})
})