Compare commits

..

1 Commits

Author SHA1 Message Date
Bobo
50161f8c8a feat: trans util 2025-05-22 14:15:57 +08:00
3 changed files with 68 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
git tag v1.1.22 git tag v1.1.23
git tag bank_card/v1.1.5 git tag bank_card/v1.1.5
git tag geoip/v1.1.5 git tag geoip/v1.1.5

View File

@@ -236,7 +236,7 @@ func DurationpbToDuration(duration *durationpb.Duration) *time.Duration {
return &d return &d
} }
func DurationpbSecond(duration *durationpb.Duration) *float64 { func DurationpbToSecond(duration *durationpb.Duration) *float64 {
if duration == nil { if duration == nil {
return nil return nil
} }
@@ -244,3 +244,20 @@ func DurationpbSecond(duration *durationpb.Duration) *float64 {
secondsInt64 := seconds secondsInt64 := seconds
return &secondsInt64 return &secondsInt64
} }
func StringToDurationpb(in *string) *durationpb.Duration {
if in == nil {
return nil
}
f, _ := time.ParseDuration(*in)
return durationpb.New(f)
}
func DurationpbToString(in *durationpb.Duration) *string {
if in == nil {
return nil
}
return trans.Ptr(in.AsDuration().String())
}

View File

@@ -288,21 +288,21 @@ func TestSecondToDurationpb(t *testing.T) {
assert.Nil(t, result) assert.Nil(t, result)
} }
func TestDurationpbSecond(t *testing.T) { func TestDurationpbToSecond(t *testing.T) {
// 测试非空输入 // 测试非空输入
duration := durationpb.New(5 * time.Second) duration := durationpb.New(5 * time.Second)
result := DurationpbSecond(duration) result := DurationpbToSecond(duration)
assert.NotNil(t, result) assert.NotNil(t, result)
assert.Equal(t, 5.0, *result, "应返回正确的秒数") assert.Equal(t, 5.0, *result, "应返回正确的秒数")
// 测试零输入 // 测试零输入
duration = durationpb.New(0) duration = durationpb.New(0)
result = DurationpbSecond(duration) result = DurationpbToSecond(duration)
assert.NotNil(t, result) assert.NotNil(t, result)
assert.Equal(t, 0.0, *result, "应返回零秒") assert.Equal(t, 0.0, *result, "应返回零秒")
// 测试空输入 // 测试空输入
result = DurationpbSecond(nil) result = DurationpbToSecond(nil)
assert.Nil(t, result, "空输入应返回nil") assert.Nil(t, result, "空输入应返回nil")
} }
@@ -353,3 +353,48 @@ func TestTimeToUnixSecondInt64Ptr(t *testing.T) {
result = TimeToUnixSecondInt64Ptr(nil) result = TimeToUnixSecondInt64Ptr(nil)
assert.Nil(t, result) assert.Nil(t, result)
} }
func TestStringToDurationpb(t *testing.T) {
// 测试有效输入
validInput := "1h30m"
expected := durationpb.New(90 * time.Minute)
result := StringToDurationpb(&validInput)
assert.NotNil(t, result)
assert.Equal(t, expected, result)
// 测试无效输入
invalidInput := "invalid-duration"
result = StringToDurationpb(&invalidInput)
assert.NotNil(t, result) // 即使输入无效time.ParseDuration 返回零值
assert.Equal(t, durationpb.New(0), result)
// 测试空字符串输入
emptyInput := ""
result = StringToDurationpb(&emptyInput)
assert.NotNil(t, result) // 空字符串解析为零值
assert.Equal(t, durationpb.New(0), result)
// 测试空指针输入
result = StringToDurationpb(nil)
assert.Nil(t, result)
}
func TestDurationpbToString(t *testing.T) {
// 测试有效输入
duration := durationpb.New(90 * time.Second) // 90秒
expected := "1m30s"
result := DurationpbToString(duration)
assert.NotNil(t, result)
assert.Equal(t, expected, *result)
// 测试零值输入
duration = durationpb.New(0)
expected = "0s"
result = DurationpbToString(duration)
assert.NotNil(t, result)
assert.Equal(t, expected, *result)
// 测试空输入
result = DurationpbToString(nil)
assert.Nil(t, result)
}