Fix: type conversion for zero values (#5151)

* added test for zero values

Signed-off-by: Flavian <flavian.sierk@gmail.com>

* implemented case for zero values

Signed-off-by: Flavian <flavian.sierk@gmail.com>
pull/5252/head
Flavian 7 years ago committed by Matthew Fisher
parent d3373f568c
commit 69c7ba320e

@ -393,6 +393,10 @@ func typedVal(v []rune, st bool) interface{} {
return nil return nil
} }
if strings.EqualFold(val, "0") {
return int64(0)
}
// If this value does not start with zero, try parsing it to an int // If this value does not start with zero, try parsing it to an int
if len(val) != 0 && val[0] != '0' { if len(val) != 0 && val[0] != '0' {
if iv, err := strconv.ParseInt(val, 10, 64); err == nil { if iv, err := strconv.ParseInt(val, 10, 64); err == nil {

@ -85,6 +85,11 @@ func TestParseSet(t *testing.T) {
expect: map[string]interface{}{"is_null": "null"}, expect: map[string]interface{}{"is_null": "null"},
err: false, err: false,
}, },
{
str: "zero=0",
expect: map[string]interface{}{"zero": "0"},
err: false,
},
} }
tests := []struct { tests := []struct {
str string str string
@ -123,6 +128,10 @@ func TestParseSet(t *testing.T) {
str: "leading_zeros=00009", str: "leading_zeros=00009",
expect: map[string]interface{}{"leading_zeros": "00009"}, expect: map[string]interface{}{"leading_zeros": "00009"},
}, },
{
str: "zero_int=0",
expect: map[string]interface{}{"zero_int": 0},
},
{ {
str: "long_int=1234567890", str: "long_int=1234567890",
expect: map[string]interface{}{"long_int": 1234567890}, expect: map[string]interface{}{"long_int": 1234567890},

Loading…
Cancel
Save