| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package strmatcher_test
- import (
- "reflect"
- "testing"
- . "github.com/v2fly/v2ray-core/v5/common/strmatcher"
- )
- func TestDomainMatcherGroup(t *testing.T) {
- patterns := []struct {
- Pattern string
- Value uint32
- }{
- {
- Pattern: "v2fly.org",
- Value: 1,
- },
- {
- Pattern: "google.com",
- Value: 2,
- },
- {
- Pattern: "x.a.com",
- Value: 3,
- },
- {
- Pattern: "a.b.com",
- Value: 4,
- },
- {
- Pattern: "c.a.b.com",
- Value: 5,
- },
- {
- Pattern: "x.y.com",
- Value: 4,
- },
- {
- Pattern: "x.y.com",
- Value: 6,
- },
- }
- testCases := []struct {
- Domain string
- Result []uint32
- }{
- {
- Domain: "x.v2fly.org",
- Result: []uint32{1},
- },
- {
- Domain: "y.com",
- Result: nil,
- },
- {
- Domain: "a.b.com",
- Result: []uint32{4},
- },
- { // Matches [c.a.b.com, a.b.com]
- Domain: "c.a.b.com",
- Result: []uint32{5, 4},
- },
- {
- Domain: "c.a..b.com",
- Result: nil,
- },
- {
- Domain: ".com",
- Result: nil,
- },
- {
- Domain: "com",
- Result: nil,
- },
- {
- Domain: "",
- Result: nil,
- },
- {
- Domain: "x.y.com",
- Result: []uint32{4, 6},
- },
- }
- g := new(DomainMatcherGroup)
- for _, pattern := range patterns {
- AddMatcherToGroup(g, DomainMatcher(pattern.Pattern), pattern.Value)
- }
- for _, testCase := range testCases {
- r := g.Match(testCase.Domain)
- if !reflect.DeepEqual(r, testCase.Result) {
- t.Error("Failed to match domain: ", testCase.Domain, ", expect ", testCase.Result, ", but got ", r)
- }
- }
- }
- func TestEmptyDomainMatcherGroup(t *testing.T) {
- g := new(DomainMatcherGroup)
- r := g.Match("v2fly.org")
- if len(r) != 0 {
- t.Error("Expect [], but ", r)
- }
- }
|