diff --git a/client_test.go b/client_test.go index b1869ba..e743443 100644 --- a/client_test.go +++ b/client_test.go @@ -403,3 +403,29 @@ func TestQueryStatistics(t *testing.T) { assert.Nil(t,err) assert.Equal(t, 1, res.RelationshipsDeleted(), "Expecting 1 relationships deleted") } + +func TestUtils(t *testing.T) { + res := RandomString(10) + assert.Equal(t, len(res), 10) + + res = ToString("test_string") + assert.Equal(t, res, "\"test_string\"") + + res = ToString(10) + assert.Equal(t, res, "10") + + res = ToString(1.2) + assert.Equal(t, res, "1.2") + + res = ToString(true) + assert.Equal(t, res, "true") + + var arr = []interface{}{1,2,3,"boom"} + res = ToString(arr) + assert.Equal(t, res, "[1,2,3,\"boom\"]") + + jsonMap := make(map[string]interface{}) + jsonMap["object"] = map[string]interface{} {"foo": 1} + res = ToString(jsonMap) + assert.Equal(t, res, "{object: {foo: 1}}") +} diff --git a/utils.go b/utils.go index 5645d01..3a26cad 100644 --- a/utils.go +++ b/utils.go @@ -18,6 +18,14 @@ func arrayToString(arr []interface{}) string { return "[" + strings.Join(strArray, ",") + "]" } +func mapToString(data map[string]interface{}) string { + pairsArray := []string{} + for k, v := range data { + pairsArray = append(pairsArray, k + ": " + ToString(v)) + } + return "{" + strings.Join(pairsArray, ",") + "}" +} + func ToString(i interface{}) string { if(i == nil) { return "null" @@ -33,9 +41,12 @@ func ToString(i interface{}) string { return strconv.FormatFloat(i.(float64), 'f', -1, 64) case bool: return strconv.FormatBool(i.(bool)) - case []interface {}: + case []interface{}: arr := i.([]interface{}) return arrayToString(arr) + case map[string]interface{}: + data := i.(map[string]interface{}) + return mapToString(data) default: panic("Unrecognized type to convert to string") }