| package skip_tests |
| |
| import ( |
| "encoding/json" |
| "errors" |
| "github.com/json-iterator/go" |
| "github.com/stretchr/testify/require" |
| "io" |
| "reflect" |
| "testing" |
| ) |
| |
| type testCase struct { |
| ptr interface{} |
| inputs []string |
| } |
| |
| var testCases []testCase |
| |
| func Test_skip(t *testing.T) { |
| for _, testCase := range testCases { |
| valType := reflect.TypeOf(testCase.ptr).Elem() |
| for _, input := range testCase.inputs { |
| t.Run(input, func(t *testing.T) { |
| should := require.New(t) |
| ptrVal := reflect.New(valType) |
| stdErr := json.Unmarshal([]byte(input), ptrVal.Interface()) |
| iter := jsoniter.ParseString(jsoniter.ConfigDefault, input) |
| iter.Skip() |
| iter.ReadNil() // trigger looking forward |
| err := iter.Error |
| if err == io.EOF { |
| err = nil |
| } else { |
| err = errors.New("remaining bytes") |
| } |
| if stdErr == nil { |
| should.Nil(err) |
| } else { |
| should.NotNil(err) |
| } |
| }) |
| } |
| } |
| } |