mirror of
https://github.com/ii64/sonic.git
synced 2026-06-21 00:46:43 +08:00
* fix:(native) StreamDecoder return error when run out of input buffer while skiping value * refactor
49 lines
No EOL
855 B
Go
49 lines
No EOL
855 B
Go
package issue_test
|
|
|
|
import (
|
|
`bytes`
|
|
`strings`
|
|
`testing`
|
|
|
|
`github.com/bytedance/sonic/decoder`
|
|
`github.com/stretchr/testify/require`
|
|
)
|
|
|
|
type Response struct {
|
|
Menu Menu `json:"menu"`
|
|
}
|
|
|
|
type Menu struct {
|
|
Items []*Item `json:"items"`
|
|
}
|
|
|
|
type Item struct {
|
|
ID string `json:"id"`
|
|
}
|
|
|
|
func (i *Item) UnmarshalJSON(buf []byte) error {
|
|
return nil
|
|
}
|
|
|
|
func TestIssue263(t *testing.T) {
|
|
q := `{
|
|
"menu": {
|
|
"items": [
|
|
{`+strings.Repeat(" ", 1024)+`}
|
|
]
|
|
}
|
|
}`
|
|
|
|
var response Response
|
|
require.Nil(t, decoder.NewStreamDecoder(bytes.NewReader([]byte(q))).Decode(&response))
|
|
|
|
q = `{
|
|
"menu": {
|
|
"items": [
|
|
{"a":"`+strings.Repeat("b", 2048)+`"}
|
|
]
|
|
}
|
|
}`
|
|
|
|
require.Nil(t, decoder.NewStreamDecoder(bytes.NewReader([]byte(q))).Decode(&response))
|
|
} |