// Package validator ... // // Description : validator ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2024-05-01 22:57 package validator import ( "git.zhangdeman.cn/gateway/validator/define" "git.zhangdeman.cn/zhangdeman/consts" "github.com/stretchr/testify/assert" "testing" ) // Test_handleFloat float转换单元测试 // // Author : go_developer@163.com<白茶清欢> // // Date : 23:00 2024/5/1 func Test_handleFloat(t *testing.T) { minVal0 := float64(0) minVal1 := float64(1) maxVal := float64(100) as := assert.New(t) checkRule := &define.FieldRule{ Path: "test_float", Type: consts.DataTypeFloat, DisableRewrite: false, DefaultValue: "", IsRequired: false, AllowEmpty: false, AllowZero: false, AllowNil: false, DisableAutoConvert: false, RequiredConditionGroup: nil, ValueLimit: &define.ValueLimit{ EnumList: nil, Min: nil, Max: nil, String: nil, Map: nil, }, SliceConfig: nil, } int1 := int64(1) f1, err := handleFloat(int1, checkRule) as.Equal(nil, err) as.Equal(float64(1), f1) // 不允许零值 int0 := int64(0) f0, err := handleFloat(int0, checkRule) as.Equal(float64(0), f0) as.NotEqual(nil, err) // 允许零值 checkRule.AllowZero = true f0, err = handleFloat(int0, checkRule) as.Equal(float64(0), f0) as.Equal(nil, err) // 取值范围符合 checkRule.ValueLimit.Min = &minVal0 checkRule.ValueLimit.Max = &maxVal f0, err = handleFloat(int0, checkRule) as.Equal(float64(0), f0) as.Equal(nil, err) // 取值范围不符合 checkRule.ValueLimit.Min = &minVal1 f0, err = handleFloat(int0, checkRule) as.Equal(float64(0), f0) as.NotEqual(nil, err) // 验证枚举值(不包含) checkRule.ValueLimit.EnumList = []string{"0", "2"} f1, err = handleFloat(int1, checkRule) as.Equal(float64(0), f1) as.NotEqual(nil, err) // 验证枚举值(包含) checkRule.ValueLimit.EnumList = []string{"0", "1", "2"} f1, err = handleFloat(int1, checkRule) as.Equal(float64(1), f1) as.Equal(nil, err) }