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
|
||||
|
||||
func init() {
|
||||
//testCases = append(testCases,
|
||||
// (*struct {
|
||||
// Upper bool `json:"M"`
|
||||
// Lower bool `json:"m"`
|
||||
// })(nil),
|
||||
//)
|
||||
asymmetricTestCases = append(asymmetricTestCases, [][2]interface{}{
|
||||
{
|
||||
(*struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user