github.com/metacubex/mihomo@v1.18.5/rules/logic_test/logic_test.go (about)

     1  package logic_test
     2  
     3  import (
     4  	// https://github.com/golang/go/wiki/CodeReviewComments#import-dot
     5  	. "github.com/metacubex/mihomo/rules/logic"
     6  
     7  	C "github.com/metacubex/mihomo/constant"
     8  	"github.com/metacubex/mihomo/rules"
     9  	"github.com/stretchr/testify/assert"
    10  	"testing"
    11  )
    12  
    13  var ParseRule = rules.ParseRule
    14  
    15  func TestAND(t *testing.T) {
    16  	and, err := NewAND("((DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
    17  	assert.Equal(t, nil, err)
    18  	assert.Equal(t, "DIRECT", and.Adapter())
    19  	assert.Equal(t, false, and.ShouldResolveIP())
    20  	m, _ := and.Match(&C.Metadata{
    21  		Host:    "baidu.com",
    22  		NetWork: C.TCP,
    23  		DstPort: 20000,
    24  	})
    25  	assert.Equal(t, true, m)
    26  
    27  	and, err = NewAND("(DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
    28  	assert.NotEqual(t, nil, err)
    29  
    30  	and, err = NewAND("((AND,(DOMAIN,baidu.com),(NETWORK,TCP)),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
    31  	assert.Equal(t, nil, err)
    32  }
    33  
    34  func TestNOT(t *testing.T) {
    35  	not, err := NewNOT("((DST-PORT,6000-6500))", "REJECT", ParseRule)
    36  	assert.Equal(t, nil, err)
    37  	m, _ := not.Match(&C.Metadata{
    38  		DstPort: 6100,
    39  	})
    40  	assert.Equal(t, false, m)
    41  
    42  	_, err = NewNOT("((DST-PORT,5600-6666),(DOMAIN,baidu.com))", "DIRECT", ParseRule)
    43  	assert.NotEqual(t, nil, err)
    44  
    45  	_, err = NewNOT("(())", "DIRECT", ParseRule)
    46  	assert.NotEqual(t, nil, err)
    47  }
    48  
    49  func TestOR(t *testing.T) {
    50  	or, err := NewOR("((DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
    51  	assert.Equal(t, nil, err)
    52  	m, _ := or.Match(&C.Metadata{
    53  		NetWork: C.TCP,
    54  	})
    55  	assert.Equal(t, true, m)
    56  	assert.Equal(t, false, or.ShouldResolveIP())
    57  }