Merge branch 'deef0000dragon1-ParseBool' of https://github.com/deef0000dragon1/gjson into deef0000dragon1-deef0000dragon1-ParseBool

This commit is contained in:
tidwall 2020-11-04 15:53:35 -07:00
commit ed7c6c18ed
2 changed files with 18 additions and 2 deletions

View File

@ -106,7 +106,8 @@ func (t Result) Bool() bool {
case True:
return true
case String:
return t.Str != "" && t.Str != "0" && t.Str != "false"
b, err := strconv.ParseBool(t.Str)
return !(!b || err != nil)
case Number:
return t.Num != 0
}

View File

@ -313,10 +313,25 @@ func TestTypes(t *testing.T) {
assert(t, (Result{Type: JSON}).Type.String() == "JSON")
assert(t, (Result{Type: 100}).Type.String() == "")
// bool
assert(t, (Result{Type: String, Str: "true"}).Bool())
assert(t, (Result{Type: True}).Bool())
assert(t, (Result{Type: False}).Bool() == false)
assert(t, (Result{Type: Number, Num: 1}).Bool())
assert(t, (Result{Type: String, Str: "1"}).Bool())
assert(t, (Result{Type: String, Str: "T"}).Bool())
assert(t, (Result{Type: String, Str: "t"}).Bool())
assert(t, (Result{Type: String, Str: "true"}).Bool())
assert(t, (Result{Type: String, Str: "True"}).Bool())
assert(t, (Result{Type: String, Str: "TRUE"}).Bool())
assert(t, (Result{Type: String, Str: "tRuE"}).Bool() == false)
assert(t, (Result{Type: String, Str: "0"}).Bool() == false)
assert(t, (Result{Type: String, Str: "f"}).Bool() == false)
assert(t, (Result{Type: String, Str: "F"}).Bool() == false)
assert(t, (Result{Type: String, Str: "false"}).Bool() == false)
assert(t, (Result{Type: String, Str: "False"}).Bool() == false)
assert(t, (Result{Type: String, Str: "FALSE"}).Bool() == false)
assert(t, (Result{Type: String, Str: "fAlSe"}).Bool() == false)
assert(t, (Result{Type: String, Str: "random"}).Bool() == false)
// int
assert(t, (Result{Type: String, Str: "1"}).Int() == 1)
assert(t, (Result{Type: True}).Int() == 1)