aboutsummaryrefslogtreecommitdiffstats
path: root/modules/util
diff options
context:
space:
mode:
Diffstat (limited to 'modules/util')
-rw-r--r--modules/util/util.go12
-rw-r--r--modules/util/util_test.go13
2 files changed, 24 insertions, 1 deletions
diff --git a/modules/util/util.go b/modules/util/util.go
index d26e6f13e4..cbc6eb4f8a 100644
--- a/modules/util/util.go
+++ b/modules/util/util.go
@@ -9,6 +9,7 @@ import (
"crypto/rand"
"errors"
"math/big"
+ "strconv"
"strings"
)
@@ -17,7 +18,7 @@ type OptionalBool byte
const (
// OptionalBoolNone a "null" boolean value
- OptionalBoolNone = iota
+ OptionalBoolNone OptionalBool = iota
// OptionalBoolTrue a "true" boolean value
OptionalBoolTrue
// OptionalBoolFalse a "false" boolean value
@@ -47,6 +48,15 @@ func OptionalBoolOf(b bool) OptionalBool {
return OptionalBoolFalse
}
+// OptionalBoolParse get the corresponding OptionalBool of a string using strconv.ParseBool
+func OptionalBoolParse(s string) OptionalBool {
+ b, e := strconv.ParseBool(s)
+ if e != nil {
+ return OptionalBoolNone
+ }
+ return OptionalBoolOf(b)
+}
+
// Max max of two ints
func Max(a, b int) int {
if a < b {
diff --git a/modules/util/util_test.go b/modules/util/util_test.go
index f82671787c..39cf07c855 100644
--- a/modules/util/util_test.go
+++ b/modules/util/util_test.go
@@ -156,3 +156,16 @@ func Test_RandomString(t *testing.T) {
assert.NotEqual(t, str3, str4)
}
+
+func Test_OptionalBool(t *testing.T) {
+ assert.Equal(t, OptionalBoolNone, OptionalBoolParse(""))
+ assert.Equal(t, OptionalBoolNone, OptionalBoolParse("x"))
+
+ assert.Equal(t, OptionalBoolFalse, OptionalBoolParse("0"))
+ assert.Equal(t, OptionalBoolFalse, OptionalBoolParse("f"))
+ assert.Equal(t, OptionalBoolFalse, OptionalBoolParse("False"))
+
+ assert.Equal(t, OptionalBoolTrue, OptionalBoolParse("1"))
+ assert.Equal(t, OptionalBoolTrue, OptionalBoolParse("t"))
+ assert.Equal(t, OptionalBoolTrue, OptionalBoolParse("True"))
+}