mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 09:08:45 +05:00
Added float64 converter in dataconverter.go
This commit is contained in:
committed by
Dan Christian Bogos
parent
f6d0b4a723
commit
54069a82c4
@@ -716,6 +716,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)
|
||||
}
|
||||
|
||||
@@ -1038,3 +1038,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