commit 0963111caa684efd87c0cecca1b37484981050c0
parent 9af2387f34a0a08fc30549286900ed641c0a29b4
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 16 Jun 2023 21:30:43 -0700
Add DoParseInt64OrDefault utils function
Diffstat:
2 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go
@@ -123,6 +123,16 @@ func DoParseInt64(v string) (out int64) {
return
}
+// DoParseInt64OrDefault ...
+func DoParseInt64OrDefault(v string, d int64) (out int64) {
+ var err error
+ out, err = ParseInt64(v)
+ if err != nil {
+ out = d
+ }
+ return
+}
+
// ParseF64 ...
func ParseF64(v string) (float64, error) {
return strconv.ParseFloat(v, 64)
diff --git a/pkg/utils/utils_test.go b/pkg/utils/utils_test.go
@@ -0,0 +1,28 @@
+package utils
+
+import "testing"
+
+func TestDoParseInt64OrDefault(t *testing.T) {
+ type args struct {
+ v string
+ d int64
+ }
+ tests := []struct {
+ name string
+ args args
+ wantOut int64
+ }{
+ {name: "", args: args{v: "", d: 10}, wantOut: 10},
+ {name: "", args: args{v: "0", d: 10}, wantOut: 0},
+ {name: "", args: args{v: "-1", d: 10}, wantOut: -1},
+ {name: "", args: args{v: "1", d: 10}, wantOut: 1},
+ {name: "", args: args{v: "a", d: 10}, wantOut: 10},
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if gotOut := DoParseInt64OrDefault(tt.args.v, tt.args.d); gotOut != tt.wantOut {
+ t.Errorf("DoParseInt64OrDefault() = %v, want %v", gotOut, tt.wantOut)
+ }
+ })
+ }
+}