github.com/m3db/m3@v1.5.1-0.20231129193456-75a402aa583b/src/query/models/matcher_test.go (about) 1 // Copyright (c) 2018 Uber Technologies, Inc. 2 // 3 // Permission is hereby granted, free of charge, to any person obtaining a copy 4 // of this software and associated documentation files (the "Software"), to deal 5 // in the Software without restriction, including without limitation the rights 6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 // copies of the Software, and to permit persons to whom the Software is 8 // furnished to do so, subject to the following conditions: 9 // 10 // The above copyright notice and this permission notice shall be included in 11 // all copies or substantial portions of the Software. 12 // 13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 // THE SOFTWARE. 20 21 package models 22 23 import ( 24 "testing" 25 26 "github.com/stretchr/testify/assert" 27 "github.com/stretchr/testify/require" 28 ) 29 30 func TestMatcherString(t *testing.T) { 31 m, err := NewMatcher(MatchEqual, []byte("foo"), []byte("bar")) 32 require.NoError(t, err) 33 require.NotNil(t, m) 34 assert.Equal(t, `foo="bar"`, m.String()) 35 assert.Equal(t, `foo="bar"`, (&m).String()) 36 } 37 38 func TestMatchType(t *testing.T) { 39 require.Equal(t, MatchEqual.String(), "=") 40 } 41 42 func TestMatchersFromEmptyString(t *testing.T) { 43 matchers, err := MatchersFromString("") 44 assert.NoError(t, err) 45 assert.Len(t, matchers, 0) 46 } 47 48 func TestMatchersFromStringErrors(t *testing.T) { 49 _, err := MatchersFromString(":") 50 assert.Error(t, err) 51 _, err = MatchersFromString(":aa") 52 assert.Error(t, err) 53 } 54 55 func TestValidMatchersFromString(t *testing.T) { 56 m, err := MatchersFromString("a:") 57 assert.NoError(t, err) 58 expected := Matchers{{ 59 Name: []byte("a"), 60 Value: []byte{}, 61 Type: MatchRegexp, 62 }} 63 64 assert.Equal(t, expected, m) 65 66 m, err = MatchersFromString("a:aa") 67 expected[0].Value = []byte("aa") 68 assert.NoError(t, err) 69 assert.Equal(t, expected, m) 70 71 m, err = MatchersFromString("a:aa b:c") 72 expected = append(expected, Matcher{ 73 Name: []byte("b"), 74 Value: []byte("c"), 75 Type: MatchRegexp, 76 }) 77 78 assert.NoError(t, err) 79 assert.Equal(t, expected, m) 80 }