mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 17:18:44 +05:00
DynamicWeightsFromString - parsing for empty fields
This commit is contained in:
@@ -34,11 +34,17 @@ func NewDynamicWeightsFromString(s, dWSep, fltrSep string) (dWs []*DynamicWeight
|
||||
}
|
||||
dWs = make([]*DynamicWeight, 0, lnDwStrs/nrFlds)
|
||||
for i := 0; i < lnDwStrs; i += nrFlds {
|
||||
dw := &DynamicWeight{FilterIDs: strings.Split(dwStrs[i], fltrSep)}
|
||||
if dw.Weight, err = strconv.ParseFloat(dwStrs[i+1], 64); err != nil {
|
||||
return nil, fmt.Errorf("invalid Weight <%s> in string: <%s>", dwStrs[i+1], s)
|
||||
var fltrIDs []string
|
||||
if len(dwStrs[i]) != 0 {
|
||||
fltrIDs = strings.Split(dwStrs[i], fltrSep)
|
||||
}
|
||||
dWs = append(dWs, dw)
|
||||
var weight float64
|
||||
if len(dwStrs[i+1]) != 0 {
|
||||
if weight, err = strconv.ParseFloat(dwStrs[i+1], 64); err != nil {
|
||||
return nil, fmt.Errorf("invalid Weight <%s> in string: <%s>", dwStrs[i+1], s)
|
||||
}
|
||||
}
|
||||
dWs = append(dWs, &DynamicWeight{FilterIDs: fltrIDs, Weight: weight})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -43,5 +43,46 @@ func TestNewDynamicWeightsFromString(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(eDws, dws) {
|
||||
t.Errorf("expecting: %+v, received: %+v", eDws, dws)
|
||||
}
|
||||
eDws = []*DynamicWeight{
|
||||
{
|
||||
FilterIDs: []string{"fltr1", "fltr2"},
|
||||
Weight: 20.0,
|
||||
},
|
||||
{
|
||||
Weight: 30.0,
|
||||
},
|
||||
{
|
||||
FilterIDs: []string{"fltr4", "fltr5"},
|
||||
Weight: 50.0,
|
||||
},
|
||||
}
|
||||
dwsStr = "fltr1&fltr2;20;;30;fltr4&fltr5;50"
|
||||
if dws, err := NewDynamicWeightsFromString(dwsStr, ";", "&"); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eDws[1], dws[1]) {
|
||||
t.Errorf("expecting: %+v, received: %+v", eDws[1], dws[1])
|
||||
}
|
||||
eDws = []*DynamicWeight{
|
||||
{
|
||||
Weight: 20.0,
|
||||
},
|
||||
}
|
||||
dwsStr = ";20"
|
||||
if dws, err := NewDynamicWeightsFromString(dwsStr, ";", "&"); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eDws, dws) {
|
||||
t.Errorf("expecting: %+v, received: %+v", eDws, dws)
|
||||
}
|
||||
eDws = []*DynamicWeight{
|
||||
{
|
||||
Weight: 0.0,
|
||||
},
|
||||
}
|
||||
dwsStr = ";"
|
||||
if dws, err := NewDynamicWeightsFromString(dwsStr, ";", "&"); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eDws, dws) {
|
||||
t.Errorf("expecting: %+v, received: %+v", eDws, dws)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user