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  }