From 075c75a269b900daf94ae64c61662cba32b50817 Mon Sep 17 00:00:00 2001 From: Romain Baugue Date: Sun, 31 Aug 2014 03:16:09 +0200 Subject: [PATCH] Added ToBool case for string, and added ToBool test cases --- cast_test.go | 20 ++++++++++++++++++++ caste.go | 2 ++ 2 files changed, 22 insertions(+) diff --git a/cast_test.go b/cast_test.go index 1015877..56623de 100644 --- a/cast_test.go +++ b/cast_test.go @@ -42,3 +42,23 @@ func TestMaps(t *testing.T) { var taxonomies = map[interface{}]interface{}{"tag": "tags", "group": "groups"} assert.Equal(t, ToStringMap(taxonomies), map[string]interface{}{"tag": "tags", "group": "groups"}) } + +func TestToBool(t *testing.T) { + assert.Equal(t, ToBool(0), false) + assert.Equal(t, ToBool(nil), false) + assert.Equal(t, ToBool("false"), false) + assert.Equal(t, ToBool("FALSE"), false) + assert.Equal(t, ToBool("False"), false) + assert.Equal(t, ToBool("f"), false) + assert.Equal(t, ToBool("F"), false) + assert.Equal(t, ToBool(false), false) + assert.Equal(t, ToBool("foo"), false) + + assert.Equal(t, ToBool("true"), true) + assert.Equal(t, ToBool("TRUE"), true) + assert.Equal(t, ToBool("True"), true) + assert.Equal(t, ToBool("t"), true) + assert.Equal(t, ToBool("T"), true) + assert.Equal(t, ToBool(1), true) + assert.Equal(t, ToBool(true), true) +} diff --git a/caste.go b/caste.go index 78c6a9e..f4382c2 100644 --- a/caste.go +++ b/caste.go @@ -45,6 +45,8 @@ func ToBoolE(i interface{}) (bool, error) { return true, nil } return false, nil + case string: + return strconv.ParseBool(i.(string)) default: return false, fmt.Errorf("Unable to Cast %#v to bool", i) }