scan_test.go 968 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package proto
  2. import (
  3. "encoding/json"
  4. . "github.com/onsi/ginkgo"
  5. . "github.com/onsi/gomega"
  6. )
  7. type testScanSliceStruct struct {
  8. ID int
  9. Name string
  10. }
  11. func (s *testScanSliceStruct) MarshalBinary() ([]byte, error) {
  12. return json.Marshal(s)
  13. }
  14. func (s *testScanSliceStruct) UnmarshalBinary(b []byte) error {
  15. return json.Unmarshal(b, s)
  16. }
  17. var _ = Describe("ScanSlice", func() {
  18. data := []string{
  19. `{"ID":-1,"Name":"Back Yu"}`,
  20. `{"ID":1,"Name":"szyhf"}`,
  21. }
  22. It("[]testScanSliceStruct", func() {
  23. var slice []testScanSliceStruct
  24. err := ScanSlice(data, &slice)
  25. Expect(err).NotTo(HaveOccurred())
  26. Expect(slice).To(Equal([]testScanSliceStruct{
  27. {-1, "Back Yu"},
  28. {1, "szyhf"},
  29. }))
  30. })
  31. It("var testContainer []*testScanSliceStruct", func() {
  32. var slice []*testScanSliceStruct
  33. err := ScanSlice(data, &slice)
  34. Expect(err).NotTo(HaveOccurred())
  35. Expect(slice).To(Equal([]*testScanSliceStruct{
  36. {-1, "Back Yu"},
  37. {1, "szyhf"},
  38. }))
  39. })
  40. })