Modified rsrfilters.go and added tests for it

This commit is contained in:
andronache
2020-11-24 14:52:37 +02:00
committed by Dan Christian Bogos
parent 07c74a4dde
commit d298e8778a
2 changed files with 26 additions and 11 deletions

View File

@@ -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
}

View File

@@ -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)
}
}