diff --git a/encode_test.go b/encode_test.go index b88c8f2..bc4df41 100644 --- a/encode_test.go +++ b/encode_test.go @@ -30,7 +30,6 @@ import ( `unsafe` `github.com/bytedance/sonic/encoder` - `github.com/stretchr/testify/assert` ) type Optionals struct { @@ -705,7 +704,7 @@ func TestDuplicatedFieldDisappears(t *testing.T) { } } -func TestIssue10281(t *testing.T) { +func TestStdLibIssue10281(t *testing.T) { type Foo struct { N json.Number } @@ -1129,61 +1128,3 @@ func TestMarshalerError(t *testing.T) { } } } - -func TestIssue3_Encode(t *testing.T) { - var v HugeStruct6 - ret, err := Marshal(v) - assert.Nil(t, err) - assert.Equal(t, []byte(`{}`), ret) -} - -func TestIssue3_Decode(t *testing.T) { - var v HugeStruct6 - err := Unmarshal([]byte(`{}`), &v) - assert.Nil(t, err) - assert.Equal(t, HugeStruct6{}, v) -} - -func BenchmarkIssue3_Encode_Sonic(b *testing.B) { - var v HugeStruct6 - err := Pretouch(reflect.TypeOf(v)) - assert.Nil(b, err) - b.ResetTimer() - for i := 0; i < b.N; i++ { - _, _ = Marshal(v) - } -} - -func BenchmarkIssue3_Encode_StdLib(b *testing.B) { - var v HugeStruct6 - ret, err := json.Marshal(v) - assert.Nil(b, err) - assert.Equal(b, []byte(`{}`), ret) - b.ResetTimer() - for i := 0; i < b.N; i++ { - _, _ = json.Marshal(v) - } -} - -func BenchmarkIssue3_Decode_Sonic(b *testing.B) { - var v HugeStruct6 - buf := []byte(`{}`) - err := Pretouch(reflect.TypeOf(v)) - assert.Nil(b, err) - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = Unmarshal(buf, &v) - } -} - -func BenchmarkIssue3_Decode_StdLib(b *testing.B) { - var v HugeStruct6 - buf := []byte(`{}`) - err := json.Unmarshal(buf, &v) - assert.Nil(b, err) - assert.Equal(b, HugeStruct6{}, v) - b.ResetTimer() - for i := 0; i < b.N; i++ { - _ = json.Unmarshal(buf, &v) - } -} diff --git a/issue3_test.go b/issue3_test.go new file mode 100644 index 0000000..034cd7b --- /dev/null +++ b/issue3_test.go @@ -0,0 +1,83 @@ +/* + * Copyright 2021 ByteDance Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package sonic + +import ( + `encoding/json` + `reflect` + `testing` + + `github.com/stretchr/testify/assert` +) + +func TestIssue3_Encode(t *testing.T) { + var v HugeStruct6 + ret, err := Marshal(v) + assert.Nil(t, err) + assert.Equal(t, []byte(`{}`), ret) +} + +func TestIssue3_Decode(t *testing.T) { + var v HugeStruct6 + err := Unmarshal([]byte(`{}`), &v) + assert.Nil(t, err) + assert.Equal(t, HugeStruct6{}, v) +} + +func BenchmarkIssue3_Encode_Sonic(b *testing.B) { + var v HugeStruct6 + err := Pretouch(reflect.TypeOf(v)) + assert.Nil(b, err) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, _ = Marshal(v) + } +} + +func BenchmarkIssue3_Encode_StdLib(b *testing.B) { + var v HugeStruct6 + ret, err := json.Marshal(v) + assert.Nil(b, err) + assert.Equal(b, []byte(`{}`), ret) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, _ = json.Marshal(v) + } +} + +func BenchmarkIssue3_Decode_Sonic(b *testing.B) { + var v HugeStruct6 + buf := []byte(`{}`) + err := Pretouch(reflect.TypeOf(v)) + assert.Nil(b, err) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _ = Unmarshal(buf, &v) + } +} + +func BenchmarkIssue3_Decode_StdLib(b *testing.B) { + var v HugeStruct6 + buf := []byte(`{}`) + err := json.Unmarshal(buf, &v) + assert.Nil(b, err) + assert.Equal(b, HugeStruct6{}, v) + b.ResetTimer() + for i := 0; i < b.N; i++ { + _ = json.Unmarshal(buf, &v) + } +} diff --git a/search_test.go b/search_test.go index 7bc6dd2..250946f 100644 --- a/search_test.go +++ b/search_test.go @@ -463,7 +463,7 @@ func TestNested(t *testing.T) { }) } -func TestIssue21(t *testing.T) { +func TestMultiLevelFields(t *testing.T) { data := `{ "Level1Field1":3, "Level1Field4":4, "Level1Field2":{ "Level2Field1":[ "value1", "value2" ],