skip_test.go 919 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package skip_tests
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "github.com/json-iterator/go"
  6. "github.com/stretchr/testify/require"
  7. "io"
  8. "reflect"
  9. "testing"
  10. )
  11. type testCase struct {
  12. ptr interface{}
  13. inputs []string
  14. }
  15. var testCases []testCase
  16. func Test_skip(t *testing.T) {
  17. for _, testCase := range testCases {
  18. valType := reflect.TypeOf(testCase.ptr).Elem()
  19. for _, input := range testCase.inputs {
  20. t.Run(input, func(t *testing.T) {
  21. should := require.New(t)
  22. ptrVal := reflect.New(valType)
  23. stdErr := json.Unmarshal([]byte(input), ptrVal.Interface())
  24. iter := jsoniter.ParseString(jsoniter.ConfigDefault, input)
  25. iter.Skip()
  26. iter.ReadNil() // trigger looking forward
  27. err := iter.Error
  28. if err == io.EOF {
  29. err = nil
  30. } else {
  31. err = errors.New("remaining bytes")
  32. }
  33. if stdErr == nil {
  34. should.Nil(err)
  35. } else {
  36. should.NotNil(err)
  37. }
  38. })
  39. }
  40. }
  41. }