master
go 97 lines 2.26 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package matcher
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestTRUE(t *testing.T) {
12 assert.True(t, TRUE().Match(nil))
13 assert.True(t, TRUE().MatchString(""))
14 }
15
16 func TestFALSE(t *testing.T) {
17 assert.False(t, FALSE().Match(nil))
18 assert.False(t, FALSE().MatchString(""))
19 }
20
21 func TestAnd(t *testing.T) {
22 assert.Equal(t,
23 matcherF,
24 And(FALSE(), stringFullMatcher("")))
25 assert.Equal(t,
26 matcherF,
27 And(stringFullMatcher(""), FALSE()))
28
29 assert.Equal(t,
30 stringFullMatcher(""),
31 And(TRUE(), stringFullMatcher("")))
32 assert.Equal(t,
33 stringFullMatcher(""),
34 And(stringFullMatcher(""), TRUE()))
35
36 assert.Equal(t,
37 andMatcher{stringPartialMatcher("a"), stringPartialMatcher("b")},
38 And(stringPartialMatcher("a"), stringPartialMatcher("b")))
39
40 assert.Equal(t,
41 andMatcher{
42 andMatcher{stringPartialMatcher("a"), stringPartialMatcher("b")},
43 stringPartialMatcher("c"),
44 },
45 And(stringPartialMatcher("a"), stringPartialMatcher("b"), stringPartialMatcher("c")))
46 }
47
48 func TestOr(t *testing.T) {
49 assert.Equal(t,
50 stringFullMatcher(""),
51 Or(FALSE(), stringFullMatcher("")))
52 assert.Equal(t,
53 stringFullMatcher(""),
54 Or(stringFullMatcher(""), FALSE()))
55
56 assert.Equal(t,
57 TRUE(),
58 Or(TRUE(), stringFullMatcher("")))
59 assert.Equal(t,
60 TRUE(),
61 Or(stringFullMatcher(""), TRUE()))
62
63 assert.Equal(t,
64 orMatcher{stringPartialMatcher("a"), stringPartialMatcher("b")},
65 Or(stringPartialMatcher("a"), stringPartialMatcher("b")))
66
67 assert.Equal(t,
68 orMatcher{
69 orMatcher{stringPartialMatcher("a"), stringPartialMatcher("b")},
70 stringPartialMatcher("c"),
71 },
72 Or(stringPartialMatcher("a"), stringPartialMatcher("b"), stringPartialMatcher("c")))
73 }
74
75 func TestAndMatcher_Match(t *testing.T) {
76 and := andMatcher{
77 stringPrefixMatcher("a"),
78 stringSuffixMatcher("c"),
79 }
80 assert.True(t, and.Match([]byte("abc")))
81 assert.True(t, and.MatchString("abc"))
82 }
83
84 func TestOrMatcher_Match(t *testing.T) {
85 or := orMatcher{
86 stringPrefixMatcher("a"),
87 stringPrefixMatcher("c"),
88 }
89 assert.True(t, or.Match([]byte("aaa")))
90 assert.True(t, or.MatchString("ccc"))
91 }
92
93 func TestNegMatcher_Match(t *testing.T) {
94 neg := negMatcher{stringPrefixMatcher("a")}
95 assert.False(t, neg.Match([]byte("aaa")))
96 assert.True(t, neg.MatchString("ccc"))
97 }