validation: support int64 int32 int16 and int8 type
This commit is contained in:
		
							parent
							
								
									805a674825
								
							
						
					
					
						commit
						2231841d74
					
				@ -249,6 +249,26 @@ func parseParam(t reflect.Type, s string) (i interface{}, err error) {
 | 
				
			|||||||
	switch t.Kind() {
 | 
						switch t.Kind() {
 | 
				
			||||||
	case reflect.Int:
 | 
						case reflect.Int:
 | 
				
			||||||
		i, err = strconv.Atoi(s)
 | 
							i, err = strconv.Atoi(s)
 | 
				
			||||||
 | 
						case reflect.Int64:
 | 
				
			||||||
 | 
							i, err = strconv.ParseInt(s, 10, 64)
 | 
				
			||||||
 | 
						case reflect.Int32:
 | 
				
			||||||
 | 
							var v int64
 | 
				
			||||||
 | 
							v, err = strconv.ParseInt(s, 10, 32)
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								i = int32(v)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						case reflect.Int16:
 | 
				
			||||||
 | 
							var v int64
 | 
				
			||||||
 | 
							v, err = strconv.ParseInt(s, 10, 16)
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								i = int16(v)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						case reflect.Int8:
 | 
				
			||||||
 | 
							var v int64
 | 
				
			||||||
 | 
							v, err = strconv.ParseInt(s, 10, 8)
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								i = int8(v)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	case reflect.String:
 | 
						case reflect.String:
 | 
				
			||||||
		i = s
 | 
							i = s
 | 
				
			||||||
	case reflect.Ptr:
 | 
						case reflect.Ptr:
 | 
				
			||||||
 | 
				
			|||||||
@ -144,17 +144,17 @@ func (v *Validation) Required(obj interface{}, key string) *Result {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Min Test that the obj is greater than min if obj's type is int
 | 
					// Min Test that the obj is greater than min if obj's type is int
 | 
				
			||||||
func (v *Validation) Min(obj interface{}, min int, key string) *Result {
 | 
					func (v *Validation) Min(obj interface{}, min int64, key string) *Result {
 | 
				
			||||||
	return v.apply(Min{min, key}, obj)
 | 
						return v.apply(Min{min, key}, obj)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Max Test that the obj is less than max if obj's type is int
 | 
					// Max Test that the obj is less than max if obj's type is int
 | 
				
			||||||
func (v *Validation) Max(obj interface{}, max int, key string) *Result {
 | 
					func (v *Validation) Max(obj interface{}, max int64, key string) *Result {
 | 
				
			||||||
	return v.apply(Max{max, key}, obj)
 | 
						return v.apply(Max{max, key}, obj)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Range Test that the obj is between mni and max if obj's type is int
 | 
					// Range Test that the obj is between mni and max if obj's type is int
 | 
				
			||||||
func (v *Validation) Range(obj interface{}, min, max int, key string) *Result {
 | 
					func (v *Validation) Range(obj interface{}, min, max int64, key string) *Result {
 | 
				
			||||||
	return v.apply(Range{Min{Min: min}, Max{Max: max}, key}, obj)
 | 
						return v.apply(Range{Min{Min: min}, Max{Max: max}, key}, obj)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -64,10 +64,10 @@ func TestRequired(t *testing.T) {
 | 
				
			|||||||
func TestMin(t *testing.T) {
 | 
					func TestMin(t *testing.T) {
 | 
				
			||||||
	valid := Validation{}
 | 
						valid := Validation{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if valid.Min(-1, 0, "min0").Ok {
 | 
						if valid.Min(int64(-1), int64(0), "min0").Ok {
 | 
				
			||||||
		t.Error("-1 is less than the minimum value of 0 should be false")
 | 
							t.Error("-1 is less than the minimum value of 0 should be false")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !valid.Min(1, 0, "min0").Ok {
 | 
						if !valid.Min(int64(1), int64(0), "min0").Ok {
 | 
				
			||||||
		t.Error("1 is greater or equal than the minimum value of 0 should be true")
 | 
							t.Error("1 is greater or equal than the minimum value of 0 should be true")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -75,10 +75,10 @@ func TestMin(t *testing.T) {
 | 
				
			|||||||
func TestMax(t *testing.T) {
 | 
					func TestMax(t *testing.T) {
 | 
				
			||||||
	valid := Validation{}
 | 
						valid := Validation{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if valid.Max(1, 0, "max0").Ok {
 | 
						if valid.Max(int64(1), int64(0), "max0").Ok {
 | 
				
			||||||
		t.Error("1 is greater than the minimum value of 0 should be false")
 | 
							t.Error("1 is greater than the minimum value of 0 should be false")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !valid.Max(-1, 0, "max0").Ok {
 | 
						if !valid.Max(int64(-1), int64(0), "max0").Ok {
 | 
				
			||||||
		t.Error("-1 is less or equal than the maximum value of 0 should be true")
 | 
							t.Error("-1 is less or equal than the maximum value of 0 should be true")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -161,17 +161,29 @@ func (r Required) GetLimitValue() interface{} {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Min check struct
 | 
					// Min check struct
 | 
				
			||||||
type Min struct {
 | 
					type Min struct {
 | 
				
			||||||
	Min int
 | 
						Min int64
 | 
				
			||||||
	Key string
 | 
						Key string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsSatisfied judge whether obj is valid
 | 
					// IsSatisfied judge whether obj is valid
 | 
				
			||||||
func (m Min) IsSatisfied(obj interface{}) bool {
 | 
					func (m Min) IsSatisfied(obj interface{}) bool {
 | 
				
			||||||
	num, ok := obj.(int)
 | 
						var v int64
 | 
				
			||||||
	if ok {
 | 
						switch obj.(type) {
 | 
				
			||||||
		return num >= m.Min
 | 
						case int64:
 | 
				
			||||||
	}
 | 
							v = obj.(int64)
 | 
				
			||||||
 | 
						case int:
 | 
				
			||||||
 | 
							v = int64(obj.(int))
 | 
				
			||||||
 | 
						case int32:
 | 
				
			||||||
 | 
							v = int64(obj.(int32))
 | 
				
			||||||
 | 
						case int16:
 | 
				
			||||||
 | 
							v = int64(obj.(int16))
 | 
				
			||||||
 | 
						case int8:
 | 
				
			||||||
 | 
							v = int64(obj.(int8))
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return v >= m.Min
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DefaultMessage return the default min error message
 | 
					// DefaultMessage return the default min error message
 | 
				
			||||||
@ -191,17 +203,29 @@ func (m Min) GetLimitValue() interface{} {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Max validate struct
 | 
					// Max validate struct
 | 
				
			||||||
type Max struct {
 | 
					type Max struct {
 | 
				
			||||||
	Max int
 | 
						Max int64
 | 
				
			||||||
	Key string
 | 
						Key string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IsSatisfied judge whether obj is valid
 | 
					// IsSatisfied judge whether obj is valid
 | 
				
			||||||
func (m Max) IsSatisfied(obj interface{}) bool {
 | 
					func (m Max) IsSatisfied(obj interface{}) bool {
 | 
				
			||||||
	num, ok := obj.(int)
 | 
						var v int64
 | 
				
			||||||
	if ok {
 | 
						switch obj.(type) {
 | 
				
			||||||
		return num <= m.Max
 | 
						case int64:
 | 
				
			||||||
	}
 | 
							v = obj.(int64)
 | 
				
			||||||
 | 
						case int:
 | 
				
			||||||
 | 
							v = int64(obj.(int))
 | 
				
			||||||
 | 
						case int32:
 | 
				
			||||||
 | 
							v = int64(obj.(int32))
 | 
				
			||||||
 | 
						case int16:
 | 
				
			||||||
 | 
							v = int64(obj.(int16))
 | 
				
			||||||
 | 
						case int8:
 | 
				
			||||||
 | 
							v = int64(obj.(int8))
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return v <= m.Max
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DefaultMessage return the default max error message
 | 
					// DefaultMessage return the default max error message
 | 
				
			||||||
@ -243,7 +267,7 @@ func (r Range) GetKey() string {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// GetLimitValue return the limit value, Max
 | 
					// GetLimitValue return the limit value, Max
 | 
				
			||||||
func (r Range) GetLimitValue() interface{} {
 | 
					func (r Range) GetLimitValue() interface{} {
 | 
				
			||||||
	return []int{r.Min.Min, r.Max.Max}
 | 
						return []int64{r.Min.Min, r.Max.Max}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// MinSize Requires an array or string to be at least a given length.
 | 
					// MinSize Requires an array or string to be at least a given length.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user