修复相关BUG + 增加单元测试, 覆盖率100%

This commit is contained in:
2025-04-20 17:57:01 +08:00
parent 299edfcc9a
commit fb1d6bb34f
19 changed files with 669 additions and 134 deletions

View File

@ -14,12 +14,12 @@ package consts
// Date : 14:10 2024/11/25
type DataType string
func (df *DataType) String() string {
return string(*df)
func (df DataType) String() string {
return string(df)
}
func (df *DataType) MarshalJSON() ([]byte, error) {
return []byte(df.String()), nil
func (df DataType) MarshalJSON() ([]byte, error) {
return []byte(`"` + df.String() + `"`), nil
}
// IsValid 判断枚举值是否有效
@ -27,9 +27,9 @@ func (df *DataType) MarshalJSON() ([]byte, error) {
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:45 2024/11/25
func (df *DataType) IsValid() bool {
func (df DataType) IsValid() bool {
for _, item := range DataTypeList {
if item.Value == *df {
if item.Value == df || item.Value.String() == df.String() {
return true
}
}
@ -369,49 +369,49 @@ func GetDataTypeDefaultValue(dataType DataType) any {
case DataTypeBoolPtr:
return new(bool)
case DataTypeMapStrAny:
return new(map[string]any)
return map[string]any{}
case DataTypeMapAnyAny:
return new(map[any]any)
return map[any]any{}
case DataTypeMapStrBool:
return new(map[string]bool)
return map[string]bool{}
case DataTypeMapStrInt:
return new(map[string]int)
return map[string]int{}
case DataTypeMapStrFloat:
return new(map[string]float64)
return map[string]float64{}
case DataTypeMapStrUint:
return new(map[string]uint)
return map[string]uint{}
case DataTypeMapStrSlice:
return new(map[string][]any)
return map[string][]any{}
case DataTypeMapStrStr:
return new(map[string]string)
return map[string]string{}
case DataTypeSliceAny:
return new([]any)
return []any{}
case DataTypeSliceString:
return new([]string)
return []string{}
case DataTypeSliceBool:
return new([]bool)
return []bool{}
case DataTypeSliceInt:
return new([]int)
return []int{}
case DataTypeSliceUint:
return new([]uint)
return []uint{}
case DataTypeSliceFloat:
return new([]float64)
return []float64{}
case DataTypeSliceMapAnyAny:
// map[any]any 序列化会有问题,当做 map[string]any 处理
return new([]map[string]any)
return []map[string]any{}
case DataTypeSliceMapStringAny:
return new([]map[string]any)
return []map[string]any{}
default:
// 序列化之后的map
for _, dataTypeItem := range DataTypeMapMarshal {
if dataTypeItem == dataType {
return ""
return "{}"
}
}
// 序列化之后的slice
for _, dataTypeItem := range DataTypeSliceMarshal {
if dataTypeItem == dataType {
return ""
return "[]"
}
}
// 指定分隔符分割的slice
@ -423,7 +423,7 @@ func GetDataTypeDefaultValue(dataType DataType) any {
// 未枚举的slice类型用any接收
for _, dataTypeItem := range DataTypeSlice {
if dataTypeItem == dataType {
return new([]any)
return []any{}
}
}
}