Sfoglia il codice sorgente

improve: number range compare left and righ value (#2315)

Co-authored-by: wanglonghui7 <wanglonghui7@jd.com>
lowang-bh 2 anni fa
parent
commit
1b477bbef9
2 ha cambiato i file con 24 aggiunte e 0 eliminazioni
  1. 20 0
      core/mapping/marshaler_test.go
  2. 4 0
      core/mapping/utils.go

+ 20 - 0
core/mapping/marshaler_test.go

@@ -261,6 +261,26 @@ func TestMarshal_RangeOut(t *testing.T) {
 	}
 }
 
+func TestMarshal_RangeIllegal(t *testing.T) {
+	tests := []interface{}{
+		struct {
+			Int int `json:"int,range=[3:1]"`
+		}{
+			Int: 2,
+		},
+		struct {
+			Int int `json:"int,range=(3:1]"`
+		}{
+			Int: 2,
+		},
+	}
+
+	for _, test := range tests {
+		_, err := Marshal(test)
+		assert.Equal(t, err, errNumberRange)
+	}
+}
+
 func TestMarshal_FromString(t *testing.T) {
 	v := struct {
 		Age int `json:"age,string"`

+ 4 - 0
core/mapping/utils.go

@@ -311,6 +311,10 @@ func parseNumberRange(str string) (*numberRange, error) {
 		right = math.MaxFloat64
 	}
 
+	if left >= right {
+		return nil, errNumberRange
+	}
+
 	return &numberRange{
 		left:         left,
 		leftInclude:  leftInclude,