增加handle format的单元测试以及修复float处理的BUG
This commit is contained in:
@ -12,6 +12,7 @@ import (
|
||||
"git.zhangdeman.cn/gateway/validator/define"
|
||||
"git.zhangdeman.cn/zhangdeman/util"
|
||||
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// handleFloat 处理float数据
|
||||
@ -27,20 +28,20 @@ func handleFloat(inputVal any, rule *define.FieldRule) (float64, error) {
|
||||
if err = util.ConvertAssign(&formatData, inputVal); nil != err {
|
||||
return 0, err
|
||||
}
|
||||
if !rule.AllowZero {
|
||||
if !rule.AllowZero && formatData == 0 {
|
||||
return 0, fmt.Errorf("%v : field type is float, but zero val is not allowed", rule.Path)
|
||||
}
|
||||
if nil == rule.ValueLimit {
|
||||
return formatData, nil
|
||||
}
|
||||
if nil != rule.ValueLimit.Min && formatData < *rule.ValueLimit.Min {
|
||||
return 0, fmt.Errorf("%v : field type is float, min val is %v, real val is %v", rule.Path, *rule.ValueLimit.Min, formatData)
|
||||
return 0, fmt.Errorf("%v : field type is float, min val is [%v], real val is [%v]", rule.Path, *rule.ValueLimit.Min, formatData)
|
||||
}
|
||||
if nil != rule.ValueLimit.Max && formatData > *rule.ValueLimit.Max {
|
||||
return 0, fmt.Errorf("%v : field type is float, max val is %v, real val is %v", rule.Path, *rule.ValueLimit.Max, formatData)
|
||||
}
|
||||
if len(rule.ValueLimit.EnumList) > 0 {
|
||||
if wrapper.ArrayType(rule.ValueLimit.EnumList).Has(formatData) < 0 {
|
||||
if wrapper.ArrayType(rule.ValueLimit.EnumList).Has(strconv.FormatFloat(formatData, 'f', -1, 64)) < 0 {
|
||||
return 0, fmt.Errorf("%v : field type is float, real val is %v, is not in enum list", rule.Path, formatData)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user