mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Modified rsrfilters.go and added tests for it
This commit is contained in:
committed by
Dan Christian Bogos
parent
07c74a4dde
commit
d298e8778a
@@ -28,22 +28,22 @@ import (
|
||||
func NewRSRFilter(fltrVal string) (rsrFltr *RSRFilter, err error) {
|
||||
rsrFltr = new(RSRFilter)
|
||||
if fltrVal == "" {
|
||||
return rsrFltr, nil
|
||||
return
|
||||
}
|
||||
if fltrVal[:1] == NegativePrefix {
|
||||
rsrFltr.negative = true
|
||||
fltrVal = fltrVal[1:]
|
||||
if fltrVal == "" {
|
||||
return rsrFltr, nil
|
||||
return
|
||||
}
|
||||
}
|
||||
rsrFltr.filterRule = fltrVal
|
||||
if fltrVal[:1] == DynamicDataPrefix {
|
||||
if rsrFltr.fltrRgxp, err = regexp.Compile(fltrVal[1:]); err != nil {
|
||||
return nil, err
|
||||
return
|
||||
}
|
||||
}
|
||||
return rsrFltr, nil
|
||||
return
|
||||
}
|
||||
|
||||
// NewRSRFilterMustCompile is used mostly in tests
|
||||
@@ -141,13 +141,11 @@ func ParseRSRFilters(fldsStr, sep string) (RSRFilters, error) {
|
||||
func ParseRSRFiltersFromSlice(fltrStrs []string) (RSRFilters, error) {
|
||||
rsrFltrs := make(RSRFilters, len(fltrStrs))
|
||||
for i, rlStr := range fltrStrs {
|
||||
if rsrFltr, err := NewRSRFilter(rlStr); err != nil {
|
||||
rsrFltr, err := NewRSRFilter(rlStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if rsrFltr == nil {
|
||||
return nil, fmt.Errorf("Empty RSRFilter in rule: %s", rlStr)
|
||||
} else {
|
||||
rsrFltrs[i] = rsrFltr
|
||||
}
|
||||
rsrFltrs[i] = rsrFltr
|
||||
}
|
||||
return rsrFltrs, nil
|
||||
}
|
||||
|
||||
@@ -405,10 +405,27 @@ func TestParseRSRFiltersNil(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestParseRSRFilterssPass(t *testing.T) {
|
||||
func TestParseRSRFilterssPassZeroLength(t *testing.T) {
|
||||
err := new(RSRFilters).Pass("", false)
|
||||
if !reflect.DeepEqual(err, true) {
|
||||
t.Errorf("Expected <true> ,received: <%+v>", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestParseRSRFilterRules(t *testing.T) {
|
||||
filter1, _ := NewRSRFilter("^rule1$")
|
||||
filter2, _ := NewRSRFilter("^rule2$")
|
||||
filters := RSRFilters{filter1, filter2}
|
||||
result := filters.FilterRules()
|
||||
if !reflect.DeepEqual(result, "^rule1$^rule2$") {
|
||||
t.Errorf("Expected <^rule1$^rule2$> ,received: <%+v>", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRSRFiltersFromSliceError(t *testing.T) {
|
||||
stringSlice := []string{"~(^_^", "^rule2$"}
|
||||
_, err := ParseRSRFiltersFromSlice(stringSlice)
|
||||
if err == nil || err.Error() != "error parsing regexp: missing closing ): `(^_^`" {
|
||||
t.Errorf("Expected <error parsing regexp: missing closing ): `(^_^`> ,received: <%+v>", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user