1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
// SPDX-License-Identifier: GPL-3.0-or-later
package matcher
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNewSimplePatternsMatcher(t *testing.T) {
tests := []struct {
expr string
expected Matcher
}{
{"", FALSE()},
{" ", FALSE()},
{"foo", simplePatternsMatcher{
{stringFullMatcher("foo"), true},
}},
{"!foo", simplePatternsMatcher{
{stringFullMatcher("foo"), false},
}},
{"foo bar", simplePatternsMatcher{
{stringFullMatcher("foo"), true},
{stringFullMatcher("bar"), true},
}},
{"*foobar* !foo* !*bar *", simplePatternsMatcher{
{stringPartialMatcher("foobar"), true},
{stringPrefixMatcher("foo"), false},
{stringSuffixMatcher("bar"), false},
{TRUE(), true},
}},
{`ab\`, nil},
}
for _, test := range tests {
t.Run(test.expr, func(t *testing.T) {
matcher, err := NewSimplePatternsMatcher(test.expr)
if test.expected == nil {
assert.Error(t, err)
} else {
assert.Equal(t, test.expected, matcher)
}
})
}
}
func TestSimplePatterns_Match(t *testing.T) {
m, err := NewSimplePatternsMatcher("*foobar* !foo* !*bar *")
require.NoError(t, err)
cases := []struct {
expected bool
line string
}{
{
expected: true,
line: "hello world",
},
{
expected: false,
line: "hello world bar",
},
{
expected: true,
line: "hello world foobar",
},
}
for _, c := range cases {
t.Run(c.line, func(t *testing.T) {
assert.Equal(t, c.expected, m.MatchString(c.line))
assert.Equal(t, c.expected, m.Match([]byte(c.line)))
})
}
}
func TestSimplePatterns_Match2(t *testing.T) {
m, err := NewSimplePatternsMatcher("*foobar")
require.NoError(t, err)
assert.True(t, m.MatchString("foobar"))
assert.True(t, m.MatchString("foo foobar"))
assert.False(t, m.MatchString("foobar baz"))
}
|