mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Added float64 converter in dataconverter.go
This commit is contained in:
committed by
Dan Christian Bogos
parent
bbb975b274
commit
285dc2a4ea
@@ -780,6 +780,7 @@ const (
|
||||
MetaSIPURIUser = "*sipuri_user"
|
||||
MetaReload = "*reload"
|
||||
MetaLoad = "*load"
|
||||
MetaFloat64 = "*float64"
|
||||
MetaRemove = "*remove"
|
||||
MetaRemoveAll = "*removeall"
|
||||
MetaStore = "*store"
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user