mirror of
https://github.com/json-iterator/go.git
synced 2025-04-20 11:28:49 +02:00
consolidate skip tests
This commit is contained in:
parent
0ed9de94f2
commit
c3b6c1e845
@ -1,12 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
type typeForTest []interface{}
|
|
||||||
|
|
||||||
var inputs = []string{
|
|
||||||
`[]`, // valid
|
|
||||||
`[1]`, // valid
|
|
||||||
`[ 1, "hello"]`, // valid
|
|
||||||
`[abc]`, // invalid
|
|
||||||
`[`, // invalid
|
|
||||||
`[[]`, // invalid
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"github.com/json-iterator/go"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_skip(t *testing.T) {
|
|
||||||
for _, input := range inputs {
|
|
||||||
t.Run(input, func(t *testing.T) {
|
|
||||||
should := require.New(t)
|
|
||||||
var dst typeForTest
|
|
||||||
stdErr := json.Unmarshal([]byte(input), &dst)
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
15
skip_tests/array_test.go
Normal file
15
skip_tests/array_test.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package skip_tests
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testCases = append(testCases, testCase{
|
||||||
|
ptr: (*[]interface{})(nil),
|
||||||
|
inputs: []string{
|
||||||
|
`[]`, // valid
|
||||||
|
`[1]`, // valid
|
||||||
|
`[ 1, "hello"]`, // valid
|
||||||
|
`[abc]`, // invalid
|
||||||
|
`[`, // invalid
|
||||||
|
`[[]`, // invalid
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
20
skip_tests/float64_test.go
Normal file
20
skip_tests/float64_test.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package skip_tests
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testCases = append(testCases, testCase{
|
||||||
|
ptr: (*float64)(nil),
|
||||||
|
inputs: []string{
|
||||||
|
"+1", // invalid
|
||||||
|
"-a", // invalid
|
||||||
|
"-\x00", // invalid, zero byte
|
||||||
|
"0.1", // valid
|
||||||
|
"0..1", // invalid, more dot
|
||||||
|
"1e+1", // valid
|
||||||
|
"1+1", // invalid
|
||||||
|
"1E1", // valid, e or E
|
||||||
|
"1ee1", // invalid
|
||||||
|
"100a", // invalid
|
||||||
|
"10.", // invalid
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
@ -1,17 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
type typeForTest float64
|
|
||||||
|
|
||||||
var inputs = []string{
|
|
||||||
"+1", // invalid
|
|
||||||
"-a", // invalid
|
|
||||||
"-\x00", // invalid, zero byte
|
|
||||||
"0.1", // valid
|
|
||||||
"0..1", // invalid, more dot
|
|
||||||
"1e+1", // valid
|
|
||||||
"1+1", // invalid
|
|
||||||
"1E1", // valid, e or E
|
|
||||||
"1ee1", // invalid
|
|
||||||
"100a", // invalid
|
|
||||||
"10.", // invalid
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"github.com/json-iterator/go"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_skip(t *testing.T) {
|
|
||||||
for _, input := range inputs {
|
|
||||||
t.Run(input, func(t *testing.T) {
|
|
||||||
should := require.New(t)
|
|
||||||
var dst typeForTest
|
|
||||||
stdErr := json.Unmarshal([]byte(input), &dst)
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
type typeForTest struct{}
|
|
||||||
|
|
||||||
var inputs = []string{
|
|
||||||
`{}`, // valid
|
|
||||||
`{"hello":"world"}`, // valid
|
|
||||||
`{hello:"world"}`, // invalid
|
|
||||||
`{"hello:"world"}`, // invalid
|
|
||||||
`{"hello","world"}`, // invalid
|
|
||||||
`{"hello":{}`, // invalid
|
|
||||||
`{"hello":{}}`, // valid
|
|
||||||
`{"hello":{}}}`, // invalid
|
|
||||||
`{"hello": { "hello": 1}}`, // valid
|
|
||||||
`{abc}`, // invalid
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"github.com/json-iterator/go"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_skip(t *testing.T) {
|
|
||||||
for _, input := range inputs {
|
|
||||||
t.Run(input, func(t *testing.T) {
|
|
||||||
should := require.New(t)
|
|
||||||
var dst typeForTest
|
|
||||||
stdErr := json.Unmarshal([]byte(input), &dst)
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
45
skip_tests/skip_test.go
Normal file
45
skip_tests/skip_test.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package skip_tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"github.com/json-iterator/go"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"io"
|
||||||
|
"testing"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
type typeForTest string
|
|
||||||
|
|
||||||
var inputs = []string{
|
|
||||||
`""`, // valid
|
|
||||||
`"hello"`, // valid
|
|
||||||
`"`, // invalid
|
|
||||||
`"\"`, // invalid
|
|
||||||
`"\x00"`, // invalid
|
|
||||||
"\"\x00\"", // invalid
|
|
||||||
"\"\t\"", // invalid
|
|
||||||
`"\t"`, // valid
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"github.com/json-iterator/go"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_skip(t *testing.T) {
|
|
||||||
for _, input := range inputs {
|
|
||||||
t.Run(input, func(t *testing.T) {
|
|
||||||
should := require.New(t)
|
|
||||||
var dst typeForTest
|
|
||||||
stdErr := json.Unmarshal([]byte(input), &dst)
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
17
skip_tests/string_test.go
Normal file
17
skip_tests/string_test.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package skip_tests
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testCases = append(testCases, testCase{
|
||||||
|
ptr: (*string)(nil),
|
||||||
|
inputs: []string{
|
||||||
|
`""`, // valid
|
||||||
|
`"hello"`, // valid
|
||||||
|
`"`, // invalid
|
||||||
|
`"\"`, // invalid
|
||||||
|
`"\x00"`, // invalid
|
||||||
|
"\"\x00\"", // invalid
|
||||||
|
"\"\t\"", // invalid
|
||||||
|
`"\t"`, // valid
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
19
skip_tests/struct_test.go
Normal file
19
skip_tests/struct_test.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package skip_tests
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
testCases = append(testCases, testCase{
|
||||||
|
ptr: (*struct{})(nil),
|
||||||
|
inputs: []string{
|
||||||
|
`{}`, // valid
|
||||||
|
`{"hello":"world"}`, // valid
|
||||||
|
`{hello:"world"}`, // invalid
|
||||||
|
`{"hello:"world"}`, // invalid
|
||||||
|
`{"hello","world"}`, // invalid
|
||||||
|
`{"hello":{}`, // invalid
|
||||||
|
`{"hello":{}}`, // valid
|
||||||
|
`{"hello":{}}}`, // invalid
|
||||||
|
`{"hello": { "hello": 1}}`, // valid
|
||||||
|
`{abc}`, // invalid
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
@ -1,6 +1,12 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
//testCases = append(testCases,
|
||||||
|
// (*struct {
|
||||||
|
// Upper bool `json:"M"`
|
||||||
|
// Lower bool `json:"m"`
|
||||||
|
// })(nil),
|
||||||
|
//)
|
||||||
asymmetricTestCases = append(asymmetricTestCases, [][2]interface{}{
|
asymmetricTestCases = append(asymmetricTestCases, [][2]interface{}{
|
||||||
{
|
{
|
||||||
(*struct {
|
(*struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user