github.com/moqsien/xraycore@v1.8.5/common/strmatcher/matchers_test.go (about)

     1  package strmatcher_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/moqsien/xraycore/common"
     7  	. "github.com/moqsien/xraycore/common/strmatcher"
     8  )
     9  
    10  func TestMatcher(t *testing.T) {
    11  	cases := []struct {
    12  		pattern string
    13  		mType   Type
    14  		input   string
    15  		output  bool
    16  	}{
    17  		{
    18  			pattern: "example.com",
    19  			mType:   Domain,
    20  			input:   "www.example.com",
    21  			output:  true,
    22  		},
    23  		{
    24  			pattern: "example.com",
    25  			mType:   Domain,
    26  			input:   "example.com",
    27  			output:  true,
    28  		},
    29  		{
    30  			pattern: "example.com",
    31  			mType:   Domain,
    32  			input:   "www.fxample.com",
    33  			output:  false,
    34  		},
    35  		{
    36  			pattern: "example.com",
    37  			mType:   Domain,
    38  			input:   "xample.com",
    39  			output:  false,
    40  		},
    41  		{
    42  			pattern: "example.com",
    43  			mType:   Domain,
    44  			input:   "xexample.com",
    45  			output:  false,
    46  		},
    47  		{
    48  			pattern: "example.com",
    49  			mType:   Full,
    50  			input:   "example.com",
    51  			output:  true,
    52  		},
    53  		{
    54  			pattern: "example.com",
    55  			mType:   Full,
    56  			input:   "xexample.com",
    57  			output:  false,
    58  		},
    59  		{
    60  			pattern: "example.com",
    61  			mType:   Regex,
    62  			input:   "examplexcom",
    63  			output:  true,
    64  		},
    65  	}
    66  	for _, test := range cases {
    67  		matcher, err := test.mType.New(test.pattern)
    68  		common.Must(err)
    69  		if m := matcher.Match(test.input); m != test.output {
    70  			t.Error("unexpected output: ", m, " for test case ", test)
    71  		}
    72  	}
    73  }