ソースを参照

consolidate skip tests

Tao Wen 7 年 前
コミット
c3b6c1e845

+ 0 - 12
skip_tests/array/inputs.go

@@ -1,12 +0,0 @@
-package test
-
-type typeForTest []interface{}
-
-var inputs = []string{
-	`[]`,             // valid
-	`[1]`,            // valid
-	`[  1, "hello"]`, // valid
-	`[abc]`,          // invalid
-	`[`,              // invalid
-	`[[]`,            // invalid
-}

+ 0 - 34
skip_tests/array/skip_test.go

@@ -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 - 0
skip_tests/array_test.go

@@ -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 - 0
skip_tests/float64_test.go

@@ -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
+		},
+	})
+}

+ 0 - 17
skip_tests/number/inputs.go

@@ -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
-}

+ 0 - 34
skip_tests/number/skip_test.go

@@ -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)
-			}
-		})
-	}
-}

+ 0 - 16
skip_tests/object/inputs.go

@@ -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
-}

+ 0 - 34
skip_tests/object/skip_test.go

@@ -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 - 0
skip_tests/skip_test.go

@@ -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)
+				}
+			})
+		}
+	}
+}

+ 0 - 14
skip_tests/string/inputs.go

@@ -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
-}

+ 0 - 34
skip_tests/string/skip_test.go

@@ -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 - 0
skip_tests/string_test.go

@@ -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 - 0
skip_tests/struct_test.go

@@ -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
+		},
+	})
+}

+ 6 - 0
type_tests/struct_field_case_test.go

@@ -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 {