github.com/netdata/go.d.plugin@v0.58.1/pkg/matcher/logical_test.go (about) 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 }