Added float64 converter in dataconverter.go

This commit is contained in:
nickolasdaniel
2021-07-09 14:09:51 +03:00
committed by Dan Christian Bogos
parent bbb975b274
commit 285dc2a4ea
3 changed files with 35 additions and 0 deletions

View File

@@ -780,6 +780,7 @@ const (
MetaSIPURIUser = "*sipuri_user"
MetaReload = "*reload"
MetaLoad = "*load"
MetaFloat64 = "*float64"
MetaRemove = "*remove"
MetaRemoveAll = "*removeall"
MetaStore = "*store"

View File

@@ -90,6 +90,8 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
return new(UnixTimeConverter), nil
case params == MetaLen:
return new(LengthConverter), nil
case params == MetaFloat64:
return new(Float64Converter), nil
case strings.HasPrefix(params, MetaLibPhoneNumber):
if len(params) == len(MetaLibPhoneNumber) {
return NewPhoneNumberConverter(EmptyString)
@@ -465,3 +467,10 @@ func (LengthConverter) Convert(in interface{}) (out interface{}, err error) {
}
return len(src), nil
}
type Float64Converter struct{}
// Convert implements DataConverter interface
func (Float64Converter) Convert(in interface{}) (interface{}, error) {
return IfaceAsFloat64(in)
}

View File

@@ -1037,3 +1037,28 @@ func TestLenTimeConverter3(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v", expected, rcv)
}
}
func TestFloat64Converter(t *testing.T) {
exp := new(Float64Converter)
cnv, err := NewDataConverter(MetaFloat64)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(exp, cnv) {
t.Errorf("Expecting: %+v, received: %+v", exp, cnv)
}
expected := 21.7
if rcv, err := cnv.Convert("21.7"); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(expected, rcv) {
t.Errorf("Expecting: %+v, received: %+v", expected, rcv)
}
expected2 := "strconv.ParseFloat: parsing \"invalid_input\": invalid syntax"
if _, err := cnv.Convert("invalid_input"); err == nil {
t.Error("Expected error")
} else if !reflect.DeepEqual(expected2, err.Error()) {
t.Errorf("Expecting: %+v, received: %+v", expected2, err.Error())
}
}